新人借鉴整理,如有不足,请多指正

  首先可以给js的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为:

<!--注:该方法仅适用纯字符串的数组,对于含有字符串和对象的混合数组不适用-->
Array.prototype.indexOf = function(val) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == val) return i;
    }
    return -1;
};
<!--对于获取纯字符串的数组中,对应的字符串的索引值还有一个方法-->
arr1.indexOf(str) <!--返回字符串str的索引值--> 
arr1.findIndex(function(data) {
  return data == str;
});<!--同样返回索引值-->

<!--对于混合数组,获取其中对象的索引值的方法如下:-->
var getArrIndex = function(arr, obj) {
    var index = null;
    var key = Object.keys(obj)[0];
    arr.every(function(value, i) {
        if (value[key] === obj[key]) {
            index = i;
            return false;
        }
        return true;
    });
    return index;
};

  然后使用通过得到这个元素的索引,使用js数组自己固有的函数去删除这个元素:代码为:

<!--第一种方法-->
Array.prototype.remove = function(val) {
    var index = this.indexOf(val);
    if (index > -1) {
        this.splice(index, 1);
    }
};
/*
* 第二️种方法
* 方法:Array.baoremove(dx) 
* 功能:删除数组元素. 
* 参数:dx删除元素的下标. 
* 返回:在原数组上修改数组. 
*/
Array.prototype.baoremove = function(dx){ 
  if(isNaN(dx)||dx>this.length){return false;} 
  this.splice(dx,1); 
}
/* 
* 第三种方法
* 方法:Array.remove(dx) 通过遍历,重构数组 
* 功能:删除数组元素. 
* 参数:dx删除元素的下标. 
*/
Array.prototype.remove=function(dx){ 
  if(isNaN(dx)||dx>this.length){return false;} 
  for(var i=0,n=0;i<this.length;i++) 
  { 
    if(this[i]!=this[dx]) 
    { 
      this[n++]=this[i] 
    } 
  } 
  this.length-=1 
}

  这样就构造了这样一个函数,比如我有有一个数组:

    var emp = ['abs','dsf','sdf','fd']
    var arr2 = [{id:1,name:'lanyan'},
                {id:2,name:'wanming'},
                {id:3,name:'tingting'},
                {id:4,name:'songsong'},
                'test',
                'ethos'];

  假如我们要删除其中的 'fd' ,就可以使用:

    <!--第一种方法-->
    emp.remove('fd');
    <!--第二种方法-->
    emp.remove(3)
    <!--第三种方法-->
    var num = getArrIndex(arr2,{id:2,name:'wanming'}) <!--返回 1-->
    arr2.remove(num)

在对象数组中,根据某个对象的属性值,获取该对象在数组中的下标。

Array.map(item => item.id).indexOf(mealid);
<!--id是查找的属性名,mealid是查找依据的属性值-->
内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!

相关课程