我有一个对象:
things = {
table: 'red',
chair: 'green'
}
遵循 Airbnb 的 JavaScript 样式指南,我想创建一个复制此对象的函数,将对象的所有键设置为蓝色。
我的两个选择似乎是:
1 使用reduce
function alwaysBlue(things) {
return Object.keys(things)
.reduce((acc, thing) => ({ ...acc, [thing]: 'blue' }), {})
}
2 使用forEach
function alwaysBlue(things) {
const blueThings = {}
Object.keys(things)
.forEach(thing => (blueThings[thing] = 'blue'))
return blueThings
}
(1)每次迭代的解构似乎很昂贵,但如果我要考虑no-param-reassign,我不能只在每次迭代时附加到累加器
但是,根据https://github.com/,应避免使用 forEach (2),而应使用 map()/every()/filter()/find()/findIndex()/reduce()/some() airbnb/javascript#iterators--不
那么,如果我要遵守 Airbnb 的 JavaScript 样式指南,那么哪种方法是首选方法——或者我还缺少另一种方法吗?