📌  相关文章
📜  根据数组的总和以降序对数组进行排序(1)

📅  最后修改于: 2023-12-03 15:26:41.996000             🧑  作者: Mango

数组总和降序排序

在编写程序时,需要经常对数组进行排序。本文将介绍如何通过计算数组元素的总和进行降序排序。

思路
  1. 创建一个数组并将其赋值给一个变量。
  2. 使用reduce()方法计算数组元素的总和。
  3. 将每个数组项与其对应的总和作为对象存储在一个新数组中。
  4. 使用sort()方法按总和的降序对新数组进行排序。
  5. 将新数组中的每个对象的数组项返回,从而创建一个按总和降序排序的数组。
代码实现
const arr = [5, 10, 15, 20];

const sortedArr = arr
  .map(value => ({ value, sum: arr.reduce((a, b) => a + b, 0) }))
  .sort((a, b) => b.sum - a.sum)
  .map(item => item.value);

console.log(sortedArr); // [20, 15, 10, 5]
代码说明

首先,我们创建了一个数组,并将其赋值给一个变量。此变量包含四个整数:51015,和20

之后,我们使用map()方法遍历了此数组,将每个值与总和作为一个对象进行封装。

const newArray = array.map(value => ({ value, sum: arr.reduce((a, b) => a + b, 0) }));

value参数是当前遍历的数组项的值,sum属性是用reduce()方法计算数组元素总和的结果。新数组newArray中的每一个元素都是一个对象,包含原始值和总和属性。

接下来,我们使用sort()方法按总和的降序对newArray进行排序。

const sortedArray = newArray.sort((a, b) => b.sum - a.sum);

最后,我们使用map()方法返回原始值,从而创建一个降序排列的数组。

const finalArray = sortedArray.map(item => item.value);

我们将返回finalArray数组[20, 15, 10, 5],按照原始数组的值由高到低进行排序。