js数组对象格式转换

//有如下格式
[{name: "title", value: "名称1"},
{name: "startTime", value: "17:00:16"},
{name: "endTime", value: "19:01:18"},
{name: "title", value: "名称2"},
{name: "startTime", value: "20:03:18"},
{name: "endTime", value: "21:04:20"}]
//需要转换成下面这样的格式
[{title: "名称1", startTime: "17:00:16", endTime: "19:01:18"},
{title: "名称2", startTime: "20:03:18", endTime: "21:04:20"}]

自己写了很多循环才实现,所以想问下有没有比较优雅的实现方式

阅读 2.6k
1 个回答

不知道这样算不算达到要求?

let root = [
  {name: "title", value: "名称1"},
  {name: "startTime", value: "17:00:16"},
  {name: "endTime", value: "19:01:18"},
  {name: "title", value: "名称2"},
  {name: "startTime", value: "20:03:18"},
  {name: "endTime", value: "21:04:20"}
];

function func(obj){
  let res = [];
  let temp = {};
  obj.forEach((item,index)=>{
    temp[item.name] = item.value;
    if((index+1)%3 === 0){
      res.push(temp);
      temp = {};
    }
  });
  return res;
}

console.log(func(root));
推荐问题