gpt4 book ai didi

javascript - 如何根据属性的总和来组织对象数组?

转载 作者:行者123 更新时间:2023-12-05 02:29:13 24 4
gpt4 key购买 nike

我正在为一个销售应用程序开发后端部分,其中我有 2 个对象数组,一个是卖家的名字,另一个是每月的销售额。我的上级告诉我,使用包含销售额的数组中的数据,从销售额最高的名称到销售额最少的名称(从最高到最低)排序名称数组,基本上是对键=>数量。我不知道该怎么做,我尝试对每个卖家的销售额使用 Reduce 方法,但我想不出如何比较它们来重组数组。代码是:

const sellers= [{id:1,name: 'juan', age: 23},{id:2,name: 'adrian', age: 32},{id:3,name: 'apolo', age: 45}];

const sales= [{equipo: 'frances', sellerId: 2, quantity: 234},{equipo: 'italiano', sellerId: 3, quantity: 24},{equipo: 'polaco', sellerId: 1, quantity: 534},{equipo: 'frances', sellerId: 2, quantity: 1234},{equipo: 'frances', sellerId: 3, quantity: 2342}];

这是我已经尝试过的:

const bestSellers= () => {
sales.reduce((sum, value) => ( value.sellerId == 1 ? sum + value.area : sum), 0); }

最终结果应该是这样的:

const sellers= [{id:3,name: 'apolo', age: 45},{id:2,name: 'adrian', age: 32},{id:1,name: 'juan', age: 23}]

最佳答案

你想在这里做两件事。

  1. 找出每个卖家的总销售额。
  2. 对每个卖家的总销售额进行排序。

在我的排序函数中,您可以看到我正在筛选卖家的所有销售。

一旦我只有一个卖家的销售额,我就使用 reduce 方法将他们的销售额相加为一个易于使用的数字。

然后我将以前的卖家数量与当前卖家的数量进行比较,以使用排序方法重新订购它们。

我鼓励您阅读所用方法的文档,以便了解每个步骤发生的情况。

使用的方法: Sort Filter Reduce

const sellers = [{
id: 1,
name: 'juan',
age: 23
}, {
id: 2,
name: 'adrian',
age: 32
}, {
id: 3,
name: 'apolo',
age: 45
}];

const sales = [{
equipo: 'frances',
sellerId: 2,
quantity: 234
}, {
equipo: 'italiano',
sellerId: 3,
quantity: 24
}, {
equipo: 'polaco',
sellerId: 1,
quantity: 534
}, {
equipo: 'frances',
sellerId: 2,
quantity: 1234
}, {
equipo: 'frances',
sellerId: 3,
quantity: 2342
}];

const expected = [{
id: 3,
name: 'apolo',
age: 45
}, {
id: 2,
name: 'adrian',
age: 32
}, {
id: 1,
name: 'juan',
age: 23
}]

const result = sellers.sort((a, b) => {
totalA = sales.filter(sale => sale.sellerId === a.id).reduce((acc, val) => acc + val.quantity, 0)
totalB = sales.filter(sale => sale.sellerId === b.id).reduce((acc, val) => acc + val.quantity, 0)
return totalB - totalA
})

// Check we get what we expect
console.log(JSON.stringify(expected) === JSON.stringify(result))

关于javascript - 如何根据属性的总和来组织对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72312675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com