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;
}

 

posted on 2018-04-18 10:50  未来-竭尽全力  阅读(1801)  评论(0编辑  收藏  举报

导航