js中的数组Array(二)----删除与去重

js数组删除包括数组清空,数组一项或者多项的删除,

测试数组(数组去重不使用此数组做测试)为

arr=[1,2,3,4,5];

 

1.根据索引删除元素

<script type="text/javascript">
         //删除
    function del(){
        //清空数组
        // arr.splice(0,arr.length);
        // console.log(arr.join())


        //删除指定索引项,删除第三项,要删除多项,调整第二个参数即可
        //方法一
        //arr.splice(2,1);
        //console.log(arr);

        //方法二
        var t=arr.slice(0,1).concat(arr.slice(2,arr.length));
        console.log(t)
    }    
</script>

测试结果为:

 

2.根据值删除元素:

<script type="text/javascript">
     var value=3;
    //删除数组从前往后第一项,倒数第一项则用lastIndexOf
    var index=arr.indexOf(value);
    arr.splice(index,1);
  console.log(arr);
</script

运行结果为:

 

3.数组去重:

<script type="text/javascript">
    function deRepeat(){
    
    }//去重
        //
        //方法一,实现思想:将数组逐个放入新数组,重复的剔除
            // var result=[];
            // for(var i=0;i<arr.length;i++){
            //     if(result.indexOf(arr[i])==-1){ 
            //         result.push(arr[i]);    
            //     }
            // }
            //
        //方法二,实现思想:如果数组有重复值,那么他们的下标(索引)一定不相等
            // var result =[arr[0]];
            // for(var i=1;i<arr.length;i++){
            //     //从数组arr开头往后找,第一个值为arr[i]的索引即为i,后面如果存在值相等,那么索引值就不为i
            //     if(arr.indexOf(arr[i])==i) result.push(arr[i]);
            // }
            //
        //方法三,实现思想:利用set
            //var result=Array.from(new Set(arr));
            //或者使用下面这种方式也是一样的
            //var result=[...new Set(arr)];
        //方法四:实现思想:对象属性无重复值,将数组项变为对象的属性,主要考虑数据类型的不同
            // var obj={},result=[],val,type;
            // for(var i=0;i<arr.length;i++){
            //     val= arr[i];
            //     type=typeof val;
            //     if(!obj[val]){
            //         obj[val]=[type];
            //         result.push(val)
            //     //考虑到数据类型的不同
            //     }else if(obj[val].indexOf(type)<0){
            //         obj[val].push(type);
            //         result.push(val);
            //     }
            // }
        //方法五:实现思想:使用两个循环,将数组最后出现匹配值存入新数组
            // var result=[];
            // for(var i=0;i<arr.length;i++){
            //     for(var j=i+1;j<arr.length;j++){
            //         if(arr[i]===arr[j])
            //             j=++i;
            //     }
            //     result.push(arr[i]);
            // }
        //方法六,实现思想:通过数组归并方法,迭代所有项
            // var result=[];
            // var s=arr.reduce(function(pre,cur,index,array){
            //     if(pre===cur) return cur;
            //     else if(pre!==cur){ 
            //         result.push(pre);
            //         return cur;
            //     }
            // })

        //方法七,实现思想:通过将数组的值赋给新数组做索引(下标)
            var count=[],result=[];
            for(var i=0;i<arr.length;i++){
                count[arr[i]]=1;
            }
            for(var i=0;i<count.length;i++){
                if(count[i]){
                    result.push(i);
                }
            }
            console.log(result);
</script>

 结果展示:

转载于:https://www.cnblogs.com/xingguozhiming/p/8628171.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值