拆分对象数组Javascript



我有一个像这样的数组对象,我需要根据总量进行拆分,所以第一件事是求和总量,然后根据总量拆分数组,如果总量>=4他们将拆分并使用对象的密钥作为新的密钥

{
25: [
{
id: 96207,
name: "Client Name",
phone: "123456789",
amount: 1,
…
},
{
id: 96484,
name: "Client Name",
phone: "123456789",
amount: 1,
…
},
{
id: 96208,
name: "Client Name",
phone: "123456789",
amount: 2,
…
},
{
id: 96261,
name: "Client Name",
phone: "123456789",
amount: 1,
…
},
{
id: 96367,
name: "Client Name",
phone: "123456789",
amount: 1,
…
},
{
id: 96431,
name: "Client Name",
phone: "123456789",
amount: 4,
…
},
{
id: 96432,
name: "Client Name",
phone: "123456789",
amount: 1,
…
},
{
id: 96483,
name: "Client Name",
phone: "123456789",
amount: 1,
…
},
{
id: 96515,
name: "Client Name",
phone: "123456789",
amount: 2,
…
},
{
id: 96536,
name: "Client Name",
phone: "123456789",
amount: 1,
…
},
{
id: 96560,
name: "Client Name",
phone: "123456789",
amount: 1,
…
}
]
}

如果总金额>=4

{
25: [
{
id: 96207,
name: "Client Name",
phone: "123456789",
amount: 1,
…
},
{
id: 96484,
name: "Client Name",
phone: "123456789",
amount: 1,
…
},
{
id: 96208,
name: "Client Name",
phone: "123456789",
amount: 2,
…
}
]
},{
25: [ 
{
id: 96261,
name: "Client Name",
phone: "123456789",
amount: 1,
…
},
{
id: 96367,
name: "Client Name",
phone: "123456789",
amount: 1,
…
},
{
id: 96432,
name: "Client Name",
phone: "123456789",
amount: 1,
…
},
{
id: 96483,
name: "Client Name",
phone: "123456789",
amount: 1,
…
}
]
}, {
25: [
{
id: 96431,
name: "Client Name",
phone: "123456789",
amount: 4,
…
}
]
}, {
25: [
{
id: 96515,
name: "Client Name",
phone: "123456789",
amount: 2,
…
},
{
id: 96536,
name: "Client Name",
phone: "123456789",
amount: 1,
…
},
{
id: 96560,
name: "Client Name",
phone: "123456789",
amount: 1,
…
}
]
}

我怎么能得到那样的结果?

您的结果中有四个项目,而不是五个,因此您可能打算在拆分后合并这些项目,以最小化您可能拥有的元素数量,但我将为您提供一个"自然主义的";解决方案,它不会打乱项目的顺序,也不会合并它们,而是进行拆分。如果你还需要什么,请告诉我:

let input = {
25: [
{
id: 96207,
name: "Client Name",
phone: "123456789",
amount: 1,
},
{
id: 96484,
name: "Client Name",
phone: "123456789",
amount: 1,
},
{
id: 96208,
name: "Client Name",
phone: "123456789",
amount: 2,
},
{
id: 96261,
name: "Client Name",
phone: "123456789",
amount: 1,
},
{
id: 96367,
name: "Client Name",
phone: "123456789",
amount: 1,
},
{
id: 96431,
name: "Client Name",
phone: "123456789",
amount: 4,
},
{
id: 96432,
name: "Client Name",
phone: "123456789",
amount: 1,
},
{
id: 96483,
name: "Client Name",
phone: "123456789",
amount: 1,
},
{
id: 96515,
name: "Client Name",
phone: "123456789",
amount: 2,
},
{
id: 96536,
name: "Client Name",
phone: "123456789",
amount: 1,
},
{
id: 96560,
name: "Client Name",
phone: "123456789",
amount: 1,
}
]
};
let output = [];
for (let key in input) {
let amount = 0;
let obj = [];
for (let item of input[key]) {
if ((amount + item.amount > 4) && (obj.length)) {
output.push({[key]: obj});
obj = [];
amount = 0;
}
amount += item.amount;
obj.push(item);
}
if (obj.length) output.push({[key]: obj});
}
console.log(output)

最新更新