一. 去重
1.方法一
function unique (arr) {
var res = arr.filter(function (item, index, array) {
return array.indexOf(item) === index;
})
return res;
}
var arrs = [1, 4, 3, 4, 6, 1];
console.log(unique(arrs)); // [1, 4, 3, 6]
2.方法二 (排序去重)
function unique (arr) {
return arr.concat().sort().filter(function (item, index, array) {
return !index || item != array[index - 1];
})
}
var arrs = [2, 4, 3, 4, 6, 1, 4, 2];
console.log(unique(arrs)); // [1, 2, 3, 4, 6]
3. 方法二 (es6去重方法)
let arr = [2, 4, 3, 4, 6, 1, 4, 2]
console.log([...new Set(arr)]) // [2, 4, 3, 6, 1]
二. 判断数组中最大值
1. 方法一 (es6)
let arr = [2, 4, 3, 4, 6, 1, 4, 2]
console.log(Math.max(...arr)) // 6
2. 方法二
function findMax(pre, next) {
return Math.max(pre, next);
}
var arrs = [2, 4, 3, 4, 6, 1, 4, 2];
console.log(arrs.reduce(findMax)); // 6
3.方法三
var arrs = [2, 4, 23, 4, 6, 1, 4, 2];
console.log(Math.max.apply(null, arrs)); // 23
三. 数组扁平化
方法一: (递归方法)
var arrs = [1, [2, [3, 4]]];
function flatten (arr) {
var result = [];
for (var i = 0, len = arrs.length; i < len; i++) {
if (Array.isArray(arr[i])) {
result = result.concat(flatten(arr[i]));
} else {
result.push(arr[i]);
}
}
return result;
}
console.log(flatten(arrs)); // [1, 2, 3, 4]
方法二 ( reduce方法 )
var arrs = [1, [2, [3, 4]]];
function flatten (arr) {
return arr.reduce(function (pre, item) {
return pre.concat(Array.isArray(item)?flatten(item):item);
}, []);
}
console.log(flatten(arrs)); // [1, 2, 3, 4]
方法三 (es6)
let arr = [1, [2, [3, 4]]]
function flatten (arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr)
}
return arr
}
console.log(flatten(arr)) // [1, 2, 3, 4]
4. 排序
方法一 二分法快速排序
var arrs = [2, 4, 23, 4, 6, 1, 4, 2];
function order (arr) {
if (arr.length == 0) {
return [];
}
var middleIndex = Math.floor(arr.length / 2);
var middle = arr.splice(middleIndex, 1); // 获取中间项的值
var left = [];
var right = [];
for (var i = 0, len = arr.length; i < len; i++) {
if (arr[i] < middle) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return order(left).concat(middle, order(right));
}
console.log(order(arrs)); // [1, 2, 2, 4, 4, 4, 6, 23]