今天在处理数据的时候遇到了这么一个问题,是一个vue的项目,主要呢是上传xlsx文件的数据,通过FileReader转成了二进制后,这里使用了一个插件就是npm i xlsx,这个插件可以帮你转成json数据的格式,去传递给服务器,但是呢xlsx解析出来的json数据格式是这样的 {姓名: "周啸天", 电话: 18310612838} 但是服务器需要的格式呢是需要{name: "周啸天", phone: 18310612838} 所以就被迫要同时修改对象的多个属性了,以下我提供了三种方法:
修改前:
let data_map = data.map((value) => {
return Object.keys(value).reduce((previousValue, currentValue) => {
let newobj = {姓名:"name",电话:"phone"}
let aa = newobj[currentValue] || currentValue
previousValue[aa] = value[currentValue]
return previousValue
},{})
})
使用上面第一种方法修改后:
方法二:
let data_map = data.map(value => {
return JSON.parse(
JSON.stringify(value).replace(/姓名/g, "name").replace(/电话/g, "phone")
);
});
方法三:
// 字段对应表
export let character = {
name: {
text: "姓名",
type: 'string'
},
phone: {
text: "电话",
type: 'string'
}
};
//上面是一个字段的小封装,下面是通过import { character } from "./assets/lib/utils";去使用的
//把读取出来的数据变为最后可以传递给服务器的数据(姓名:name 电话:phone)
let arr = [];
data.forEach(item => {
let obj = {};
for (let key in character) {
if (!character.hasOwnProperty(key)) break;
let v = character[key],
text = v.text,
type = v.type;
v = item[text] || "";
type === "string" ? (v = String(v)) : null;
type === "number" ? (v = Number(v)) : null;
obj[key] = v;
}
arr.push(obj);
});