JavaScript实现数组全排列、去重及求最大值算法示例
网络 2018-09-18 1195
本文实例讲述了JavaScript实现数组全排列、去重及求最大值算法。分享给大家供大家参考,具体如下:
1、全排列(递归)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function permutation(arr){ if (arr.length == 1) return arr; else if (arr.length == 2) return [[arr[0],arr[1]],[arr[1],arr[0]]]; else { var temp = []; for (var i = 0; i < arr.length; i++) { var save = arr[i]; arr.splice(i, 1);//取出arr[i] var res = permutation(arr);//递归排列arr[0],arr[1],...,arr[i-1],arr[i+1],...,arr[n] arr.splice(i, 0, save);//将arr[j]放入数组,保持原来的位置 for (var j = 0; j < res.length; j++) { res[j].push(arr[i]); temp.push(res[j]);//将arr[j]组合起来 } } return temp; } } |
2、数组去重
方法一:
1 2 3 4 5 6 7 8 | function norepeat(contents) { var norepeatContents = []; for (var i = 0; i < contents.length; i++) { if(norepeatContents.indexOf(contents[i]) == -1) norepeatContents.push(contents[i]); } return norepeatContents; } |
方法二:
1 2 3 4 5 6 7 8 9 10 | function norepeat(contents) { var norepeatContents = [], hash = {}; for (var i = 0; i < contents.length; i++) { if(!hash[contents[i]]) { norepeatContents.push(contents[i]); hash[contents[i]] = true; } } return norepeatContents; } |
3、求数组最大数
方法一:
1 2 3 4 5 6 7 8 | function findMax(arr) { var max = arr[0]; for (var i = 1; i < arr.length; i++) { if (arr[i] > max) max = arr[i]; } return max; } |
方法二:
1 2 3 | function findMax(arr) { return Math.max.apply(Math, arr); } |