假设,我们从后端取回来的Json对象数据中,有某些属性名不是我们想要的,就需要给它们重新命名。例如:
//原数组
array:[{old_name:1},{old_name:2}]
//改了属性名之后的数组
array:[{new_name:1},{old_name:2}]
// 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'))
})
说明:
如需修改多个属性:
可以多次调用replace方法
JSON.parse(JSON.stringify(array).replace(/old_name1/g, 'new_name1').replace(/old_name2/g, 'new_name2').replace(/old_name3/g, 'new_name3'))
//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}
})
将数组中所有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);
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, '地址': '北京'}
// ]