You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中map方法将参数包裹在花括号中为何返回对象数组

问题解答

你的猜测接近本质,但触发这个键值自动映射逻辑的不是map方法,而是ECMAScript 2015(ES6)引入的对象属性简写语法特性。

你提供的运行代码如下:

const startingArray = ['One', 'Two', 'Three', 'Four', 'Five'];

let endingArray = startingArray.map((nums) => {
  return { nums }
});

console.log(endingArray)

运行后得到对象数组的完整逻辑是:

  1. map方法确实会遍历原数组的每一个元素,将每个元素传入回调函数,把回调的返回值收集为新数组的元素
  2. 回调函数中return { nums }的写法是对象字面量的简写,等价于return { nums: nums }:
    • 当你在对象字面量的大括号中仅填写变量名时,JS会自动把变量名作为对象的键名,变量的实际值作为对应键的取值
    • 这里回调的形参nums每次接收的就是原数组当前遍历到的元素值,所以每次返回的对象就是{nums: 原数组当前元素}
  3. 所有回调返回的对象被map收集后,就得到了你看到的对象数组。

你可以做个简单测试验证:把回调的形参名改成item,返回值写为{item},最终得到的数组元素就会变成{item: 'One'}、{item: 'Two'}的形式,这也能说明这个特性和map无关,是JS本身的语法规则。

对象属性简写在日常开发中非常常用,脱离map场景也可以正常使用,比如:

const username = "小明";
const age = 18;
// 下面两种写法完全等价
const user1 = { username: username, age: age };
const user2 = { username, age };
// 最终两个变量的值都是 {username: "小明", age: 18}

内容的提问来源于stack exchange,提问作者Austin737

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:18:03