作者:抓尼莫為生 | 来源:互联网 | 2022-11-27 19:49
假设我有一个数组:
members = [
{name: 'Anna', class: 'one'},
{name: 'Bob', class: 'two'},
{name: 'Chuck', class: 'two'}];
removed = members.myRemoveByClass('two'); //something like
// removed is {name: 'Bob', class: 'two'}
// members is [{name: 'Anna', class: 'one'}, {name: 'Chuck', class: 'two'}]
我正在寻找一些东西myRemoveByClass
.ES2015很好或使用Lodash.该阵列已经订购.无的问题,我已经看到相当符合我正在寻找的.
1> Jonas Wilms..:
您可以创建自己的Array类:
class Members extends Array {
removeByClass(className) {
for(const [index, member] of this.entries())
if(member.class === className)
return this.splice(index, 1)[0];
}
}
用它作为
const members = new Members([ {/*...*/}, {/*...*/} ]);
members.removeByClass("...");
PS:"class"是一个非常糟糕的名字,因为它是一个保留的关键字
2> Mamun..:
您可以使用Array.prototype.findIndex():
该findIndex()
方法返回满足提供的测试功能的数组中第一个元素的索引。否则,它返回-1,表示没有元素通过测试。
然后splice()
按那个索引对象。
var members = [
{name: 'Anna', class: 'one'},
{name: 'Bob', class: 'two'},
{name: 'Chuck', class: 'two'}];
var idx = members.findIndex(p => p.class=="two");
var removed = members.splice(idx,1);
console.log(removed);
console.log(members);