【发布时间】:2017-10-18 03:51:32
【问题描述】:
我有一个对象:
things = {
table: 'red',
chair: 'green'
}
遵循 Airbnb 的 JavaScript 样式指南,我想创建一个复制此对象的函数,将对象的所有键设置为蓝色。
我的 2 个选项似乎是:
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/airbnb/javascript#iterators--nope,应该避免使用 forEach(2) 来支持 map() / every() / filter() / find() / findIndex() / reduce() / some()
如果我要遵守 Airbnb 的 JavaScript 样式指南,那么哪种方法是首选方法 - 还是我缺少另一种方法?
【问题讨论】:
-
那个对象有语法错误。请修复它。
标签: javascript iterator reduce airbnb-js-styleguide eslint-config-airbnb