如何根据另一个数组的排序方式对一个数组进行排序? (JavaScript)的

前端之家收集整理的这篇文章主要介绍了如何根据另一个数组的排序方式对一个数组进行排序? (JavaScript)的前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我必须创建一个函数来根据每个数字的“权重”对一串数字进行排序 – “权重”是加在一起的数字的数字(99的权重为18,权重为100将是1等等).这意味着字符串“100 54 32 62”将返回“100 32 62 54”.

我可以使用以下方法获得这些数字的权重数组:

function orderWeight(str) {
    var arr = str.split(" ");
    var sortArr = [];
    arr.forEach(t => sortArr.push(t.split("").map(s => parseInt(s,10)).reduce(add,0)));
}

其中add只是一个通用的附加功能.对于上面的例子,sortArr将是[1,9,5,8].

根据数字权重sortArr的新数组如何排序,从字符串arr中对原始数字数组进行排序的最佳方法是什么?

谢谢!

最佳答案
这应该做的伎俩:

var x = '100 54 32 62';

function orderWeight(str) {
  return str.split(' ').sort(function(a,b) {
    return (a.split('').reduce(function(p,c) { return +p + +c; })) > (b.split('').reduce(function(p,c) { return +p + +c; }));
  }).join(' ');
}

var result = orderWeight(x);

输出

100 32 62 54

更新:

根据Sterling的建议,这里是用lambda格式编写的相同函数.

var x = '100 54 32 62';

function orderWeight(str) {
  return str.split(' ').sort((a,b) => a.split('').reduce((p,c) => +p + +c) > b.split('').reduce((p,c) => +p + +c)).join(' ');
}

var result = orderWeight(x);

注意:这是我第一次使用lambda语法编写Javascript.感谢Sterling的建议.

原文链接:https://www.f2er.com/js/428933.html

猜你在找的JavaScript相关文章