2020-05-19 修改对象的多个属性

今天在处理数据的时候遇到了这么一个问题,是一个vue的项目,主要呢是上传xlsx文件的数据,通过FileReader转成了二进制后,这里使用了一个插件就是npm i xlsx,这个插件可以帮你转成json数据的格式,去传递给服务器,但是呢xlsx解析出来的json数据格式是这样的 {姓名: "周啸天", 电话: 18310612838} 但是服务器需要的格式呢是需要{name: "周啸天", phone: 18310612838} 所以就被迫要同时修改对象的多个属性了,以下我提供了三种方法:

修改前:


image.png
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
        },{})
    }) 

使用上面第一种方法修改后:


image.png

方法二:

 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);
      });
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。