JS 数组删除元素

2020-10-25  本文已影响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 的元素
上一篇 下一篇

猜你喜欢

热点阅读