我有一个对象:
things = {
table: 'red',
chair: 'green'
}
遵循 Airbnb 的 JavaScript 样式指南,我想创建一个复制此对象的函数,并将该对象的所有键设置为蓝色。
我的两个选择似乎是:
1 使用减少
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 样式指南,那么哪种方法是首选方法 - 还是我还缺少其他方法?
最佳答案
我想说的一般准则是,您可以遵守您选择的编码约定,除非它们迫使您编写对性能产生负面影响的实现,并且大到足以考虑。如果是这种情况,那么您将必须牺牲编码标准才能编写性能足够好的实现。
我不知道你的真实数据是什么,但我打赌#1 会很好,如果不是,那么#2 很可能是一个很好的妥协。该指南并没有说 forEach
是不好,它只是不是最好。
关于javascript - 使用解构或 forEach 进行减少 - 迭代和 Airbnb JavaScript 风格指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44045938/