美文网首页
JS 数组删除元素

JS 数组删除元素

作者: 夹板儿孩 | 来源:发表于2020-10-25 00:09 被阅读0次

    对JS删除数组中的某个元素进行的一个小封装
    扩展一个数组删除函数,删除时会改变数组自身的长度,这个方法将直接更改原数组
    当传入下标时会直接删除这个下标的元素。当传入对象时,会删除这个对象。

         
            /**
             * 扩展一个数组删除函数,删除时会改变数组自身的长度,这个方法将直接更改原数组
             * 当传入下标时会直接删除这个下标的元素。当传入对象时,会删除这个对象。
             * @param obj 下标或者一个对象。
             * @returns {Array} 返回数组本身,以方便链式操作。
             */
            Array.prototype.remove = function (obj) {
              let index = -1;
              if(Object.prototype.toString.call(obj) === '[object Number]'){
                index = obj;
              }else{
                for (let i = 0; i < this.length; i++) {
                  if(this[i] === obj){
                    index = i;
                    break;
                  }
                }
              }
              if(index>-1) this.splice(index, 1);
              return this;
            };
    
            //测试数组一
            let arr = [
              {name: '张三'},
              "a",
              1,
            ]
            console.log(JSON.stringify(arr));           //[{"name":"张三"},"a",1]   打印原数组
            arr.remove(arr[0])
            console.log(JSON.stringify(arr));           //["a",1]                   删除了第一个元素后打印
            arr.remove(arr[0])
            console.log(JSON.stringify(arr));           //[1]                       再次删除第一个元素打印
            arr.remove(arr[0])
            console.log(JSON.stringify(arr.length));    //0                     再次删除第一个元素后,数组为空
    
            //测试数组二
            let arr2 = [
              {name: '李四'},
              "b",
              2,
              false,
              [1]
            ]
            console.log(JSON.stringify(arr2.remove(0).reverse()))          //[[1],false,2,"b"]      链式操作,删除下标为 0 的元素后,反转数组
            let temp = arr2[1];
            console.log(JSON.stringify(arr2.remove(temp).remove(2)))       //[[1],2]                链式操作,删除 temp 元素对象后,删除数组中下标为 2 的元素
    

    相关文章

      网友评论

          本文标题:JS 数组删除元素

          本文链接:https://www.haomeiwen.com/subject/mocgmktx.html