我需要按字母顺序返回单词中的字母。我遇到以下问题,我不知道如何从数字中返回字母,我尝试使用String.fromCharCode()
和charAt()
,但是它什么也没做。
我得到了:
function AlphabetSoup(str) {
let spl = str.split('');
let res = spl.map(order => order.charCodeAt()).sort((a,b) => b - a).reverse();
return res;
}
结果是[ 98, 99, 100, 101, 101, 111, 114, 116, 121 ]
答案 0 :(得分:1)
默认情况下,.sort()
已按其UTF-16字符串表示形式对值进行排序。
默认的排序顺序是基于将元素转换为字符串,然后比较其UTF-16代码单元值的序列。
function AlphabetSoup(str) {
return str.split('').sort();
}
var r = AlphabetSoup("HelloWorld");
console.log(r);
如果您坚持使用建议的方法,则可以使用map
将值重新String.fromCharCode()
重新返回为它们的字符串表示形式。
function AlphabetSoup(str) {
let spl = str.split('');
let res = spl
.map(order => order.charCodeAt())
.sort((a, b) => a-b)
.map(order => String.fromCharCode(order));
return res;
}
var r = AlphabetSoup("HelloWorld");
console.log(r);
答案 1 :(得分:0)
console.log(AlphabetSoup('hello'))
console.log(AlphabetSoup2('hello'))
/* Given what you gave, you have to convert it back */
function AlphabetSoup(str) {
let spl = str.split('');
let res = spl.map(char => char.charCodeAt())
.sort((a, b) => b - a)
.reverse()
.map(ascii=>String.fromCharCode(ascii)) // <-- convert back
.join(''); // <-- make it a string
return res;
}
/* Of course string comparison natively works on ASCII values */
function AlphabetSoup2(str) {
let arr = str.split('');
return arr.sort((a, b) => b < a).join(''); // <-- notice the '<'
}
当然,sort()
默认是您想要的,因此您可以通过return arr.sort().join('')