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',
}