数组转换想要的数组?

let data=[
{id:1,width:500,height:1000},
{id:2,width:500,height:1000},
{id:3,width:500,height:500},
{id:4,width:500,height:500},
{id:5,width:500,height:1000},
{id:6,width:500,height:1000},
{id:7,width:500,height:500},
{id:8,width:500,height:500},
{id:9,width:500,height:500},
{id:10,width:500,height:500},
]

let data2=[
{id:1,slot:1,list:[{width:500,height:1000},{width:500,height:1000}]},
{id:2,slot:0,list:[{width:500,height:500},{width:500,height:500}]},
{id:3,slot:1,list:[{width:500,height:1000},{width:500,height:1000}]},
{id:4,slot:0,list:[{width:500,height:500},{width:500,height:500},{width:500,height:500},{width:500,height:500}]},
]

数组一怎么转换为数组二呢 ,相邻的高度相等放在一起

阅读 639
1 个回答
const exchange = list => list.reduce((res, v) => {
  const prev = res[res.length-1];
  if(prev?.list[0].height === v.height) prev.list.push({width: v.width, height: v.height});
  else res.push({id: res.length+1, slot: 1-res.length%2, list: [{width: v.width, height: v.height}]})
  return res;
}, [])


exchange([
  {id:1,width:500,height:1000},
  {id:2,width:500,height:1000},
  {id:3,width:500,height:500},
  {id:4,width:500,height:500},
  {id:5,width:500,height:1000},
  {id:6,width:500,height:1000},
  {id:7,width:500,height:500},
  {id:8,width:500,height:500},
  {id:9,width:500,height:500},
  {id:10,width:500,height:500},
])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题