zoukankan      html  css  js  c++  java
  • 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>

     结果展示:

  • 相关阅读:
    Centos7.0 安装Oralce 11g数据库
    python学习:基础数据类型
    Centos7.0 安装MySQL数据库
    Centos7.0 安装MariaDB数据库
    微服务的详情
    Class -- 10 -- Method类常用方法解析
    遍历list的三种方式
    使用@Autowired注解警告Field injection is not recommended
    java中的两种排序工具Arrays和Collections的使用
    java的reflection和introspector
  • 原文地址:https://www.cnblogs.com/xingguozhiming/p/8628171.html
Copyright © 2011-2022 走看看