0
点赞
收藏
分享

微信扫一扫

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

<script>
const list = [{
id: 'a',
title: 'A'
}, {
id: 'b',
title: 'B',
children: [{
id: 'c',
title: 'C'
}, {
id: 'd',
title: 'D'
}]
}]
</script>

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, '地址': '北京'}
// ]


举报

相关推荐

0 条评论