categories.map(item => {
localCategories.map(localItem => {
if (localItem.id === item.id) {
item.name = localItem.name;
}
});
});
"localCategories":
[
{
"id": "1",
"name": "Музыка",
"img" : "31526348973.png"
},
{
"id": "4",
"name": "Жңылык",
"img" : "31526309377.png"
},
{
"id": "7",
"name": "Балдарга",
"img": "31526300037.png"
}
]
答案 0 :(得分:2)
不是真正的“简单”,但更易于阅读:
localCategories.forEach(({name, id}) =>
categories.find(c => c.id === id).name = name);
或者使用查找表的一种可能很麻烦的方式:
const catByID = new Map(localCategories.map(c => ([c.id, c]));
categories.forEach(({id, name}) => catById.get(id).name = name);
答案 1 :(得分:1)
这可以通过map
和find
完成。请注意,findById
是curried,以提高find
方法中的可读性:
const findById = id => list => list.id === id
categories.map(category => ({
...category,
name: localCategories.find(findById(category.id)).name,
}))
您可能希望通过在map
内执行类似的操作来确保找到的对象存在,以便在尝试访问name
属性时不会引发错误:
const foundCategory = localCategories.find(findById(category.id))
return {
...category,
name: foundCategory ? foundCategory.name : 'Some default value',
}