新人借鉴整理,如有不足,请多指正
首先可以给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是查找依据的属性值-->
内容来源于网络如有侵权请私信删除
- 还没有人评论,欢迎说说您的想法!