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

JavaScript中如何通过对象数组属性值映射生成目标对象

问题根因

你写的array.map(x => {[x.country]: false})语法不生效,是因为箭头函数的语法规则:当箭头函数直接跟大括号时,JS会把大括号识别为函数体的代码块边界,而非要返回的对象字面量。这种情况下[x.country]: false会被解析为非法语法,直接报错。
另外如果你的目标是生成适配复选框组的绑定值,map本身只会返回对象数组,也不符合{ 键名: false }的单对象结构需求。

可直接用的实现方案

如果你需要返回对象数组

给对象字面量外层包裹圆括号,强制JS将括号内内容识别为对象表达式,而非代码块:

// 运行后得到 [{ 中国: false }, { 美国: false }, ...] 结构的数组
const objArr = array.map(x => ({ [x.country]: false }))

如果你需要适配动态复选框组的单对象结构

复选框组通常需要的是所有国家名作为键、默认值为false的单个对象,直接用Object.fromEntries搭配map生成即可:

// 运行后得到 { "中国": false, "美国": false, ... } 结构,可直接绑定到复选框组的value属性
const checkboxDefaultValue = Object.fromEntries(
  array.map(item => [item.country, false])
)

如果需要兼容不支持Object.fromEntries的老旧环境,可以用reduce实现相同逻辑:

const checkboxDefaultValue = array.reduce((result, item) => {
  result[item.country] = false
  return result
}, {})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:09:12