Javascript:将对象从foreach推送到数组

Javascript:将对象从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

我想根据对象ID从数组中提取对象集合。我使用的是香草Javascript

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完成,解决方案