假设我有一个数组:
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'}]
Run Code Online (Sandbox Code Playgroud)
我正在寻找一些东西myRemoveByClass.ES2015很好或使用Lodash.该阵列已经订购.无的问题,我已经看到相当符合我正在寻找的.
您可以创建自己的Array类:
class Members extends Array {
removeByClass(className) {
for(const [index, member] of this.entries())
if(member.class === className)
return this.splice(index, 1)[0];
}
}
Run Code Online (Sandbox Code Playgroud)
用它作为
const members = new Members([ {/*...*/}, {/*...*/} ]);
members.removeByClass("...");
Run Code Online (Sandbox Code Playgroud)
PS:"class"是一个非常糟糕的名字,因为它是一个保留的关键字
您可以使用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);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1500 次 |
| 最近记录: |