如何使用map函数为JSON文件中的每个对象批量新增属性
实现代码
Array.map的核心规则是:回调函数返回什么值,最终生成的新数组对应位置的元素就是什么。要为每个原数组元素添加age:30属性,有两种可落地的写法,优先推荐无副作用的实现:
- 展开运算符写法(推荐,不会修改原始数据)
直接在返回值里用对象展开语法,把原item的所有属性复制到新对象,再追加age字段即可:
const data = require("./data.json"); const items = data.map((item) => { return { ...item, age: 30 }; });
这种写法生成的每个元素都是全新对象,不会改动原data数组里存储的原始对象,适合后续可能重复使用原始数据的场景。
- 直接修改原对象写法
如果确定不需要保留不带age属性的原始对象,也可以直接给遍历到的item赋值后返回:
const items = data.map((item) => { item.age = 30; return item; });
注意:这种写法会直接改动内存中原对象的属性,如果其他代码逻辑依赖原始对象的字段构成,容易出现不可预期的状态污染,仅在确定无复用需求时使用。
常见语法坑提醒
你当前示例里写的data.json文件内容包含const arr = [...]这类JS变量声明语句,不符合JSON纯数据的语法规范,直接用require()引入会触发语法报错。正确的data.json应该是纯数组结构,无任何JS语法关键字:
[ { "index": 0, "name": "John", "hair": "Brown" }, { "index": 1, "name": "Bob", "hair": "Blonde" } ]
内容的提问来源于stack exchange,提问作者lache
相关产品推荐
相关产品推荐

