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});