关于数据转化的问题

let fundList = [

{
    name: 'a',
    id: 0,
},
{
    name: 'b',
    id: 1,
}

];
let beforeData =[

{
    'approved_amount_sum': 44200,
    'date': '2018-08-07',
    'a': 44200,
    'a_rate': 1,
},
{
    'approved_amount_sum': null,
    date: '2018-08-08',
},

]
let data = [

{
    'approved_amount_sum': 44200,
    'date': '2018-08-07',
    'a': 44200,
    'a_rate': 1,
    'b': null,
    'b_rate': null,
},
{
    'approved_amount_sum': null,
    'date': '2018-08-08',
    'a': null,
    'a_rate': null,
    'b': null,
    'b_rate': null,
},

]
需要根据fundList里面的name跟beforeData进行匹配,beforeData中没有的进行添加,同时添加name_rate的变量, 想问问路过的大神这个怎么写

阅读 1.5k
2 个回答
let fundObj = fundList.reduce((t,c)=>{
    t[c.name] = null;
    t[c.name + '_rate'] = null;
    return t;
}, {});

let afterData = beforeData.map(o => Object.assign({}, fundObj, o));
console.log(afterData);

let fundList = [

  {
    name: 'a',
    id: 0,
  },
  {
    name: 'b',
    id: 1,
  }
];

let beforeData =[

  {
    'approved_amount_sum': 44200,
    'date': '2018-08-07',
    'a': 44200,
    'a_rate': 1,
  },
  {
    'approved_amount_sum': null,
    date: '2018-08-08',
  },
];

for(let eachData of beforeData){
  for(let f of fundList){
    if(!eachData.hasOwnProperty(f.name)){
       eachData[f.name] = null;
    }
    if(!eachData.hasOwnProperty(f.name+"_rate")){
      eachData[f.name+"_rate"] = null;
    }
  }
}
console.log(beforeData)

output:

[{
  a: 44200,
  a_rate: 1,
  approved_amount_sum: 44200,
  b: null,
  b_rate: null,
  date: "2018-08-07"
},  {
  a: null,
  a_rate: null,
  approved_amount_sum: null,
  b: null,
  b_rate: null,
  date: "2018-08-08"
}]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题