我一直在尝试解决我遇到的在线 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
大致是(array
是 split(" ")
在原始字符串上的结果):array.sort((a, b) => sumDigits(a) - sumDigits(b));
然后大概你需要通过
.join(" ")
将结果加入到单个字符串中。 .请注意,我没有故意提供完整的联合解决方案,因为我的感觉是您需要帮助解决这个问题,而不是让解决方案交给您。 :-)
关于javascript - 根据数组元素的总和对数组中的元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59705034/