数组去重+多维数组转一维数组

很多面试题都是数组去重,给大家安利一下

第一种方法

<script>
var arr=[1,2,3,4,4,5,6,7,6,5,0]
    for(var i=0;i<arr.length;i++){
        for(var j=i+1;j<arr.length;j++){
            if(arr[i]==arr[j]){
                arr.splice(j,1);
                j--
            }
        }
    }
    alert(arr)
</script>

其实个人感觉上面的代码是查找相同就删除


第二种方法

var arr=[1,2,3,4,4,5,6,7,6,5,0];
           var json={};
           var tmp=[];
            for(var i=0;i<arr.length;i++){          
              json[arr[i]]=arr[i];
            }
            for(var v in json){
                tmp.push(v);
            }
            console.log(tmp)

其实就是对象的key是不会重复的原理【有点小神奇】


第三种

            var arr=[1,2,4,54,56,6,0,1,2,4]
            var n = [arr[0]]; //结果数组
            for(var i = 1; i < arr.length; i++) //从第二项开始遍历
            {
                //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
                //那么表示第i项是重复的,忽略掉。否则存入结果数组
                if (arr.indexOf(arr[i]) == i) n.push(arr[i]);
            }
            console.log(n)

最后彩蛋内容
近来去面试,面了一个很有趣的试题

var arr=[['$6'],['$12'],['$12']]
转成arr=['$6','$12']

其实有点意思想想接下来的思路,,尤其是把多维数组转成数组让我长见识辣
转数组方法1

var arr=[['$6'],[['$12'],['$12']],['$12'],['$18']]
console.log(arr.toString().split(','))
//["$6", "$12", "$12", "$12", "$18"]
2
console.log(arr.join(',').split(','))
//["$6", "$12", "$12", "$12", "$18"]

这还没去重只是转成一维数组
我写的方法是

var arr=[['$6'],['$12'],['$12']];
           var json={};
           var tmp=[];
            for(var i=0;i<arr.length;i++){
              arr[i]=arr[i].toString();
              json[arr[i]]=arr[i];
            }
            for(var v in json){
                tmp.push(v);
            }
            console.log(tmp)

猜你喜欢

转载自blog.csdn.net/qq_28008615/article/details/59537905