为了账号安全,请及时绑定邮箱和手机立即绑定

合并数组内的JSON对象

合并数组内的JSON对象

红颜莎娜 2021-04-08 16:13:59
我有一个JSON数组如下[{"Name" : "Arrow","Year" : "2001"},{"Name" : "Arrow","Type" : "Action-Drama"},{ "Name" : "GOT","Type" : "Action-Drama"}]我正在尝试将其转换为[  {     "Name" : "Arrow",    "Year" : "2001",    "Type" : "Action-Drama",  },  {   "Name" : "GOT",   "Type" : "Action-Drama"  }]任何帮助,不胜感激。
查看完整描述

3 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

您可以使用reduce()和findIndex()


let data = [

{"Name" : "Arrow",

"Year" : "2001"

},


{"Name" : "Arrow",

"Type" : "Action-Drama"

},

{ "Name" : "GOT",

"Type" : "Action-Drama"

}

]



let res = data.reduce((ac,a) => {

  let ind = ac.findIndex(x => x.Name === a.Name);

  ind === -1 ? ac.push({...a}) : ac[ind] = {...ac[ind],...a};

  return ac;



},[])

console.log(res)


查看完整回答
反对 回复 2021-04-22
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

使用reduce和Object.assign合并数组中的项目:


const data = [{

  "Name" : "Arrow",

  "Year" : "2001"

}, {

  "Name" : "Arrow",

  "Type" : "Action-Drama"

}, {

  "Name" : "GOT",

  "Type" : "Action-Drama"

}];




function mergeByProp (prop, xs) {

  return xs.reduce((acc, x) => {

    if (!acc[x[prop]]) {

      acc[x[prop]] = x;

    } else {

      acc[x[prop]] = Object.assign(acc[x[prop]], x);

    }

    return acc;

  }, {});

}


function objToArr (obj) {

  return Object.keys(obj).map(key => obj[key]);

}


console.log(objToArr(mergeByProp('Name', data)));


查看完整回答
反对 回复 2021-04-22
  • 3 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信