📅  最后修改于: 2023-12-03 15:26:41.996000             🧑  作者: Mango
在编写程序时,需要经常对数组进行排序。本文将介绍如何通过计算数组元素的总和进行降序排序。
reduce()
方法计算数组元素的总和。sort()
方法按总和的降序对新数组进行排序。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]
首先,我们创建了一个数组,并将其赋值给一个变量。此变量包含四个整数:5
,10
,15
,和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]
,按照原始数组的值由高到低进行排序。