Js 批量替换数组对象的属性名

假设,我们从后端取回来的Json对象数据中,有某些属性名不是我们想要的,就需要给它们重新命名。例如:

//原数组
array:[{old_name:1},{old_name:2}]
//改了属性名之后的数组
array:[{new_name:1},{old_name:2}]

1.replace

// array为数组,old_name为修改前属性名,new_name为修改后属性名
    JSON.parse(JSON.stringify(array).replace(/old_name/g, 'new_name')) 

//例:
//把checkboxItems的id项转换为value
 this.setData({
 	checkboxItems:JSON.parse(JSON.stringify(this.data.checkboxItems).replace(/id/g, 'value')) 
 })

说明:

  • JSON.stringify() 把json对象 转成 json字符串
  • 使用正则的 replace() 方法替换属性名
  • JSON.parse() 再把json字符串 转成 json对象

如需修改多个属性:

可以多次调用replace方法

JSON.parse(JSON.stringify(array).replace(/old_name1/g, 'new_name1').replace(/old_name2/g, 'new_name2').replace(/old_name3/g, 'new_name3'))

2.可以使用数组的map方法

//array为数组,old_name为修改前属性名,new_name为修改后属性名

array.map(function(g){
return {new_name1:g.old_name1,new_name2:g.old_name2,new_name3:g.old_name3}
})

3.二维数组使用map

将数组中所有id变为code,所有title变为name



let result2 = [];
    let s = list.map(item => {
      let res = {};
      res.code = item.id;
      res.name = item.title;
      if (item.children) {
        res.children = item.children.map(data => { return { code: data.id, name: data.title } });
      }
      return res;
    })
    console.log(s);

4.for循环和map结合

const arr = [
  {name: '张三', age: 18, address: '湖北'}, 
  {name: '李四', age: 18, address: '安徽'}, 
  {name: '王五', age: 18, address: '北京'}
]
const map = { name: '姓名', age: '年龄', address: '地址'}
 
function change(arr, map) {
 // 在这里写代码
}
 
const arr2 = change(arr, map)
console.log(arr2)
// [
//  {'姓名': '张三', '年龄': 18, '地址': '湖北'}, 
//  {'姓名': '李四', '年龄': 18, '地址': '安徽'}, 
//  {'姓名': '王五', '年龄': 18, '地址': '北京'}
// ]

需要得到的结果:使用 map对象的属性值批量替换arr数组对象里面的属性值得到新的数组对象arr2

打印结果如上图所示

代码演示:

function change(arr, map) {
 // 在这里写代码
let newArr=[]
for (let i = 0; i < arr.length; i++) {
        let obj={}
      for(let key in arr[i]){
       obj[ map[key]]=arr[i][key]      
    }
    newArr.push(obj)
    }
return newArr
}
 
const arr2 = change(arr, map)
console.log(arr2)
 
 
// [
//  {'姓名': '张三', '年龄': 18, '地址': '湖北'}, 
//  {'姓名': '李四', '年龄': 18, '地址': '安徽'}, 
//  {'姓名': '王五', '年龄': 18, '地址': '北京'}
// ]

你可能感兴趣的:(JS,javascript,前端,json)