js数组排序方法总结


昨天提到了Array.from方法配合set可以实现排序,那么今天总结下还有哪些方法可以实现排序呐。

1:创建一个新的数组,赋予目标数组的第一个元素,然后循环判断目标数组的第二个元素到最后一个元素,如果不包含在新数组中则push进新数组

function a1(arr) {
let s = Object.prototype.toString;
if(s.call(arr)!== '[object Array]'){
    throw new typeError('the argument need array');
}
let nArr = []
arr.forEach(function(item,index) {
    if(nArr.indexOf(item) === -1){
        nArr.push(item)
    }
})
return nArr;
}  

2:利用set结构实现 需要支持es6。

function unique(arr) {
return [...new Set(arr)]
}

3:利用对象的属性不能重复进行判断,但是对象的属性还会自动调用toString方法,因此无法分辨string,number是否重复比如[1,'1']因此利用新数组的indexOf进行判断下。

function unique2(array){
  var n = {}, r = [], len = array.length, val;
    for (var i = 0; i < array.length; i++) {
        val = array[i];
        if (!n[val]) {
          n[val] = [val]
            r.push(val);
        } else if (r.indexOf(val) < 0) {
            n[val].push(val);
            r.push(val);
        }
    }
    return r;
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM