数组如何去重?

var arr=[1,2,3,4,3,3,3]; 去除arr的所有的3,

期待值: arr=[1,2,4];

该怎么做?有没有简单便捷的方法?

阅读 4k
4 个回答

[1,2,3,4,3,3,3].filter(function(v, i, arr) {return arr.indexOf(v) === arr.lastIndexOf(v);});
function removeRepitition(arr){
    var obj = {},newArr = [];
    for(var i=0,length=arr.length;i<length;i++){
        if (!obj[arr[i]]) {
            obj[arr[i]] = {
                val: arr[i],
                remove: false
            }
        }else{
            obj[arr[i]] = {
                val: arr[i],
                remove: true
            }
        }
    }
    for(item in obj){
        if (!obj[item].remove) {
            newArr.push(obj[item].val)
        }
    }
    return newArr
}

利用es6 的新增数据结构set,可以快速去重:

let arr = [1,3,3,5,5];
let newArr = [...new Set(arr)];
console.log(newArr);//[1,3,5]

百度吧,前辈们总结的很多了,貌似有七八种方法,各有优点和缺点

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题