【发布时间】:2019-04-14 19:25:47
【问题描述】:
如果联系人中的 value 属性与 selectedContact 中的值匹配,我想创建一个包含联系人对象的新数组。有更简单的方法吗?
selectedContact: number[] = [0,2] //value
contacts: Contact[] = [{
firstName:"Dan";
lastName:"Chong";
email:"danc@mail.com";
value:0;
},
{
firstName:"Mark";
lastName:"Wong";
email:"markw@mail.com";
value:1;
},
{
firstName:"Layla";
lastName:"Sng";
email:"layla@mail.com";
value: 2;
}]
预期的最终结果:
newArray = [{
firstName:"Dan";
lastName:"Chong";
email:"danc@mail.com";
value:0;
},{
firstName:"Layla";
lastName:"Sng";
email:"layla@mail.com";
value:2;
}];
我目前的解决方案:
const newArray: Contact[] = [];
this.selectedContact.forEach(index => {
newArray.push(this.contacts.find(c => c.value === index));
});
【问题讨论】:
-
未能提及当前解决方案与预期结果有何不同或遇到任何错误
-
肯定有更好的方法,但是你说的“更简单”是什么意思,你在找什么?
-
您对“更简单”的标准是什么?很难想出更简单的方法。不过可能有更有效的方法,例如创建 contacts 的索引以供重复使用。
-
对不起,我的意思是一种更有效的方法来执行此操作,而无需修改数组。当前的解决方案提供了所需的输出,但是否有更有效的方法,例如不使用 forEach 循环?
标签: javascript arrays typescript object angular6