Javascript 如何使此构造更简单? 如何使此构造更简单? localCategories是json文件中的对象数组。。。。。。。。。。。。。。 类别是一个类似的数组。。。。。。。。。。。。。。

Javascript 如何使此构造更简单? 如何使此构造更简单? localCategories是json文件中的对象数组。。。。。。。。。。。。。。 类别是一个类似的数组。。。。。。。。。。。。。。,javascript,arrays,Javascript,Arrays,不太“简单”,但更容易阅读: 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(

不太“简单”,但更容易阅读:

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

这可以通过
map
find
完成。请注意,
findById
用于改进
find
方法的可读性:

const findById = id => list => list.id === id

categories.map(category => ({
  ...category,
  name: localCategories.find(findById(category.id)).name,
}))
您可能希望通过在
映射
中执行类似操作来确保找到的对象存在,以便在尝试访问
名称
属性时不会引发错误:

const foundCategory = localCategories.find(findById(category.id))
return {
  ...category,
  name: foundCategory ? foundCategory.name : 'Some default value',
}

你能解释一下“简单”是什么意思吗?你想把两个数组合并成一个数组吗?
const findById = id => list => list.id === id

categories.map(category => ({
  ...category,
  name: localCategories.find(findById(category.id)).name,
}))
const foundCategory = localCategories.find(findById(category.id))
return {
  ...category,
  name: foundCategory ? foundCategory.name : 'Some default value',
}