javascript - 根据数组元素的总和对数组中的元素进行排序

标签 javascript data-structures

我一直在尝试解决我遇到的在线 Javascript 挑战。所以,问题是这样的
我有一个数组

let strng="103 123 4444 99 2000"

所以我必须根据单个元素的总和按升序排列它们
103=1+0+3=4
123=1+2+3=6
4444=4+4+4+4=16
99=9+9=18
2000=2+0+0+0=2

所以现在根据结果strng数组中的元素需要按升序排序
最后的答案应该是
["2000" "103" "123" "4444" "99"]

所以我尝试了,我达到了一个我完全不知道下一步是什么的地步
下面是我的代码
let s=[]

let f=strng.split(' ')
console.log(f)
f.map(item=>{
  let d=item.split('').reduce((a,b)=>Number(a)+Number(b),0)
  s.push(d)

  s.sort((a,b)=>a-b)


})
 console.log(s)     // gives me [2, 4, 6, 16, 18]

所以我对它们进行了排序。将单个元素的数字相加,但现在我应该如何或如何排列 strng 数组中的元素?
我需要通过按升序排序来返回 strng 数组。所以作为初学者我想问的下一步是什么,我完全被困在这里。

最佳答案

您的一般方法很好,但不要使用 map , 使用 sort .毕竟这就是它的目的。 :-) 我也可能会给自己一个 sumDigits功能:

function sumDigits(str) {
    return str.split("").reduce((s, v) => s + Number(v), 0);
}

然后sort大致是(arraysplit(" ") 在原始字符串上的结果):
array.sort((a, b) => sumDigits(a) - sumDigits(b));

然后大概你需要通过 .join(" ") 将结果加入到单个字符串中。 .

请注意,我没有故意提供完整的联合解决方案,因为我的感觉是您需要帮助解决这个问题,而不是让解决方案交给您。 :-)

关于javascript - 根据数组元素的总和对数组中的元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59705034/

相关文章:

javascript - MDN 上的代码 : how does this IE specific shim for setTimer work?

c++ - 我需要什么类型的数据结构来链接到多个参数

c++ - 创建一组随机连接的节点?

java - 两个线程访问频繁更新的 Arraylist 的问题

algorithm - 我怎样才能提供一个很好的、易于使用的抽象来跟踪列表的 "dirty"元素?

javascript - ReactJS 渲染时调用 onClick 函数

javascript - 在移动 Safari 中更好/更快地滚动?

javascript - 检查javascript中是否存在变量

javascript - 正则表达式严格检查字母数字和特殊字符

java - 有没有办法创建Java Util堆栈的固定堆栈大小