Javascript:将对象从foreach推送到数组
我想根据对象ID从数组中提取对象集合。我使用的是香草JavascriptJavascript:将对象从foreach推送到数组,javascript,arrays,foreach,Javascript,Arrays,Foreach,我想根据对象ID从数组中提取对象集合。我使用的是香草Javascript contacts = [ {ID: 1, firstName: "Aaron", lastName: "Smith"}, {ID: 2, firstName: "Ben", lastName: "Smith"}, {ID: 3, firstName: "Conrad", lastName: "Smith"} ]; filteredContactIds = [1, 3]; filteredContac
contacts = [
{ID: 1, firstName: "Aaron", lastName: "Smith"},
{ID: 2, firstName: "Ben", lastName: "Smith"},
{ID: 3, firstName: "Conrad", lastName: "Smith"}
];
filteredContactIds = [1, 3];
filteredContacts = [];
filteredContactIds.forEach(function (filteredId) {
filteredContacts.push(
contacts.forEach(function (contact) {
if (contact.ID == filteredId) {
return contact;
}
})
)
});
Contacts和FilteredContactId被简化,在我的代码中,两个数组都被正确填充。问题是,filteredContacts数组只接收每个联系人对象的ID属性,我想插入整个对象
我已经耗尽了有限的理解力。有人能指出问题吗?您的方法的问题是
Array#forEach
不返回值。它只是对数组中的每个项执行一些操作。这意味着undefined
将被推送到filteredContacts
。您可以使用contacts.filter
,但可以删除内环
使用Array#filter
和数组包含检查:
const contacts=[
{ID:1,姓:“亚伦”,姓:“史密斯”},
{ID:2,姓:“本”,姓:“史密斯”},
{ID:3,姓:“康拉德”,姓:“史密斯”}
];
常量FilteredContactId=[1,3];
const filteredContacts=contacts.filter({ID})=>filteredContacts.includes(ID));
console.log(filteredContacts)代码>如果es6可用。@NinaScholz是的。我包括了一个去糖化的版本。没有箭头函数或const
es5@charlietfl完成,解决方案