如何使用JavaScript在保存前修改JSON属性名 将id改为groupId生成新数组
你可以使用ES6+的map方法配合对象解构实现需求,该方案不会修改原数组,属于无副作用的操作,推荐优先使用:
const myArr = [ { "id": 12, "creationTimestamp": "2021-09-15 15:01:11", "groupName": "one", "$$hashKey": "object:15" }, { "id": 13, "creationTimestamp": "2021-09-15 15:01:14", "groupName": "two", "$$hashKey": "object:16" }, { "id": 14, "creationTimestamp": "2021-09-15 15:01:19", "groupName": "three", "$$hashKey": "object:17" } ] const array2 = myArr.map(({ id, ...rest }) => ({ groupId: id, ...rest }))
实现逻辑说明
map方法遍历原数组,每处理一个元素就返回一个新对象,最终生成全新数组,不会改动原数组的任何内容- 解构每个对象取出
id属性,剩余其他所有属性存入rest对象 - 构造新对象时将原
id的值赋值给groupId字段,再展开rest保留其他所有原有属性
如果需要兼容低版本ES运行环境,可以用普通循环实现:
var array2 = []; for (var i = 0; i < myArr.length; i++) { var newItem = {}; var current = myArr[i]; for (var key in current) { if (key === 'id') { newItem.groupId = current[key]; } else { newItem[key] = current[key]; } } array2.push(newItem); }
注意:不推荐直接修改原数组对象的实现方式,会导致原始数据被污染,如果你确实需要这么做,可以用下面的写法:
// 副作用写法:会修改原数组的对象属性 const array2 = myArr.map(item => { item.groupId = item.id; delete item.id; return item; })
内容的提问来源于stack exchange,提问作者Kumara
相关产品推荐
相关产品推荐

