在我的示例中,我有一个受ES5支持的普通for
循环,它可以完成我想要的操作。最近发现,ES6中的所有新循环都是Array
对象的原型方法。
考虑到这一点,我想知道是否存在迭代数字s的新的最佳实践,或者for
循环是否仍然有用。像我的示例那样的接缝将是使for
循环保持相关性的合理用例。
示例:(参考注释进行编辑)
const entries = {};
for (let i = 0; i < 5; i++) {
entries[`entry${i}`] = 'Some string';
}
返回:{entry0: "Some string", entry1: "Some string", entry2: "Some string", entry3: "Some string", entry4: "Some string"}
答案 0 :(得分:2)
使用数组函数时要小心,将它们串在一起的人越多,在后台创建的循环就越多。例如,使用以下代码:
const sum = [1,1,2,3,null,4,5,5,6]
.filter(Boolean)
.map(i => i * 2)
.reduce((sum, val) => sum + val, 0)
您正在后台创建3个循环:
对于您的问题,您可以通过创建一个数组,填充每个值(否则不会迭代),然后进行一次forEach来与这些函数进行类似的操作。
const entries = {};
new Array(5).fill(null).forEach((itm, i) => entries[`entry${i}`] = 'Some string')
console.log(entries)
最后,选择最适合您的应用程序的方法。 for ... in/of
几乎总是比内置数组函数执行得更快,因此,如果您要进行大量处理,for ... in/of
是最好的选择,否则内置函数应该可以正常工作。
答案 1 :(得分:2)
您可以使用所需键映射新对象,然后将所有对象分配给现有对象。
零件:
const
entries = {},
length = 5;
Object.assign(entries, ...Array.from({ length }, (_, i) => ({ [`entry${i}`]: 'Some string' })));
console.log(entries);