对字符串进行数组排序
Array.sort on a string
有人知道为什么在字符串上调用Array.sort是非法的吗?
[].sort.call("some string")
// "illegal access"
但是调用Array.map、Array.reduce或Array.filter可以吗?
[].map.call("some string", function(x){
return String.fromCharCode(x.charCodeAt(0)+1);
});
// ["t", "p", "n", "f", "!", "t", "u", "s", "j", "o", "h"]
[].reduce.call("some string", function(a, b){
return (+a === a ? a : a.charCodeAt(0)) + b.charCodeAt(0);
})
// 1131
[].filter.call("some string", function(x){
return x.charCodeAt(0) > 110;
})
// ["s", "o", "s", "t", "r"]
Array.prototype.sort
会修改要排序的字符串,所以您不能这样做。您只能创建一个新的、不同的字符串。
x = 'dcba';
// Create a character array from the string, sort that, then
// stick it back together.
y = x.split('').sort().join('');
因为字符串是不可变的。
你提到的工作函数返回一个新对象,它们不会更新字符串。
当然,不那么直接地对字符串进行排序很容易:
var sorted = "some string".split("").sort().join("");
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- Js char数组将字符串整数视为整数
- Javascript中的多维数组排序索引问题
- 循环选择标记并创建数组或字符串
- 将包含数组的字符串转换为实际数组
- 数组类型字符串导致类型错误的对象
- 单词数组到字符串
- 带多维数组返回字符串的json_encode;阵列”;而不是数据
- 如何按日期对Javascript对象数组排序
- 数组排序后显示更改
- 当许多元素相等时,Javascript数组排序无法正常工作
- Javascript:一个二维数组的字符串
- Javascript数组排序速度受字符串长度的影响
- 使用字符串按属性错误对对象进行数组排序
- 对字符串进行数组排序
- Javascript数组排序将字符串MAG250放在底部,其他项目放在ASC顶部
- 将字符串数组排序为对象数组
- 将JavaScript数组与字符串和数字排序为数字数组和字符串数组
- 根据字符串将数组排序为数组new
- 多维数组按字符串排序,而不是按值排序