Javascript 基于id列表从对象获取值的有效方法
我有Javascript 基于id列表从对象获取值的有效方法,javascript,Javascript,我有用户列表: users: Array<any> = [{id:1,name:'A'},{id:2,name:'B'},{id:3,name:'C'}]; 如何从users数组中获取所有对象,这些对象在selectUsers数组中具有id 您可以将indexOf与filter一起使用 this.users.filter(user => this.selectedUsers.indexOf(user.id ) > -1) 我认为这应该满足您的要求: var found
用户列表
:
users: Array<any> = [{id:1,name:'A'},{id:2,name:'B'},{id:3,name:'C'}];
如何从
users
数组中获取所有对象,这些对象在selectUsers
数组中具有id
您可以将indexOf与filter一起使用
this.users.filter(user => this.selectedUsers.indexOf(user.id ) > -1)
我认为这应该满足您的要求:
var found = this.users.filter(
item => this.selectedUsers.some(id => item.id == id)
)
更新
var found = this.users.filter(
item => this.selectedUsers.some(id => item.id == id)
).forEach(item => {
item.label = item.name;
item.name = undefined;
});
或
这很好用。但是我可以返回匹配的对象作为{id:1,标签:'A'}。ie使用标签更改名称属性?我用两种方法更新了我的答案。第一个修改数据,第二个创建与所需结构匹配的新对象。
var found = this.users.filter(
item => this.selectedUsers.some(id => item.id == id)
).forEach(item => {
item.label = item.name;
item.name = undefined;
});
var found = this.users.filter(
item => this.selectedUsers.some(id => item.id == id)
).map(item => {id: item.id, label: item.name});