JavaScript是否有类似Python列表推导式的对象列表填充简写方式?
JavaScript 中类似 Python 列表推导式的实现方式
你提到的这种手动用forEach循环push元素的写法确实有点繁琐,好在JavaScript里有完全等价且更优雅的实现——Array.map()方法,它和Python的列表推导式思路一致,都是基于原数组生成新数组,不用手动维护空数组和push操作。
先看你原来的写法:
const foo = ['bar', 'hello', 'world'] const things = [] foo.forEach((x) => { things.push({ name: x, age: 1 }) })
用map()优化后的写法是这样的:
const foo = ['bar', 'hello', 'world']; const things = foo.map(x => ({ name: x, age: 1 }));
是不是和Python的列表推导式一样简洁?这里要注意箭头函数返回对象的时候,需要把对象用小括号()包起来,不然JavaScript会把大括号当成函数体的边界,而不是对象字面量。
如果后续需要更复杂的逻辑(比如根据不同的x值设置不同的age),map()也能轻松处理,比如:
const things = foo.map(x => { const age = x === 'bar' ? 2 : 1; return { name: x, age }; });
这种写法不仅代码更简洁,还符合函数式编程的风格,map()会直接返回处理后的新数组,不需要手动修改外部变量,可读性和可维护性都更强。
内容的提问来源于stack exchange,提问作者Juicy
相关产品推荐
相关产品推荐

