数组转换想要的数组?

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}]},
]

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


回答:

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},

])

以上是 数组转换想要的数组? 的全部内容, 来源链接: utcz.com/p/935324.html

回到顶部