js数组操作

一. 去重

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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值