根据:如何修改数组中对象的key - 乂丫丫的个人空间 - OSCHINA - 中文开源技术交流社区
后端返回的数据都是中文的key值,我想改成英文的来用,如图一改成图二
这里的代码是带上我自己的理解的,有注释
let rows=Arrparse.rows //后端返回的数据
console.log(rows,"11111111转之前");
let newArr1 = [];//定义一个空数组
// rows 是第一个参数 是后端响应的数据
// key 是第二个参数,是数组,我们自己要的key
function convertKey (rows, key) {
// console.log(key,"key");// 94行 我们自己要的key ["province","mqds","ylcqts","ylcqtl","ylcqtzz","fwscpj"]
rows.forEach((item, index) => {
// console.log(item,"item");// 每一行省份的数据,有31个 {省: "福建省", 盲区单数: 330, 遗留超7天: 911, 遗留超7天率: 0.106674473067, 遗留7天增长: -xxx,平均服务时长: 6.174962}
let newObj = {};//定义一个空对象
for (var i = 0; i < key.length; i++) {
// console.log(Object.keys(item),"后端返回的key,数组格式");//["省", "盲区单数", "遗留超7天", "遗留超7天率", "遗留7天增长", "平均服务时长"]
// console.log(Object.keys(item)[i],"每一行的每一个key值,单独的, 啥");//省 啥 盲区单数 啥 遗留超7天 啥 遗留超7天率 啥
newObj[key[i]] = item[Object.keys(item)[i]]
// console.log(item[Object.keys(item)[i]],"item[Object.keys(item)[i]]");// 89行的每一个key,然后这里打印对应的值,比如对应上面的:河北省 146 601 0.09xxx6 -xxx 3.1xxx
}
newArr1.push(newObj);
// console.log(newObj,"newObj");//index.js:94 {province: "福建省", mqds: 288, ylcqts: 678, ylcqtl: 0.0xxx, ylcqtzz: -xxx, …} fwscpj: "5.14"mqds: 288 province: "福建省" ylcqtl: "9.18%" ylcqts: 678 ylcqtzz: "-6.16%"__proto__: Object "newObj"
})
return newArr1;
}
let data2 = convertKey(rows, ["province","mqds","ylcqts","ylcqtl","ylcqtzz","fwscpj"]);
// ["province","mqds","ylcqts","ylcqtl","ylcqtzz","fwscpj"] 是数组,我们自己要的key
newArr1.forEach(v=>{
if(v.ylcqtzz){
v.ylcqtl=(v.ylcqtl *100).toFixed(2)+"%"
v.fwscpj= (v.fwscpj).toFixed(2)
v.ylcqtzz=(v.ylcqtzz *100).toFixed(2)+"%"
}
})
// console.log(newArr1,134)
this.setData({
Data:newArr1
})
// console.log(data2,0000);//和newArr1一样,额,这个一打印页面就出问题
// console.log(newArr1,11111);//也是数组包对象的格式
console.log(this.data.Data,"22222222222转之后")
}).catch(err => {
// console.log('请求失败')
console.log(err)
})
参考的文章代码,可根据自己实际情况改:
data1: [
{
appName: '应用1',
capacity: 233456
},
{
title: '应用2',
key: 124535
}
],
data2: [
{
name: '应用1',
value: 233456
},
{
name: '应用2',
value: 124535
}
]
-
说明:
data1是后台响应的数据。data2是要格式化的数据。
data1和data2的数据格式一样,只是key不一样。 -
问题:
如何写一个方法第一个参数是原数据(data1),第二个参数是一个数组是保存key。返回data2 -
解决办法:
convertKey (arr, key) {
let newArr = [];
arr.forEach((item, index) => {
let newObj = {};
for (var i = 0; i < key.length; i++) {
newObj[key[i]] = item[Object.keys(item)[i]]
}
newArr.push(newObj);
})
console.log(newArr)
return newArr;
}
let data2 = convertKey(data1, ['name', 'value']);