控制台说无法读取 charCodeAt 属性
console says cant read charCodeAt property
<script>
var str=prompt('enter');
var a= str.split('');
for (j=0; j<str.length; j++){
for(i=j; i<str.length; i++)
{
if(a[i].charCodeAt(0) > a[i+1].charCodeAt(0))
{
var b= a[i];
a[i]=a[i+1];
a[i+1]=b;
}
}
}
str=a.join('');
document.write(str);
</script>
我知道排序方法更有效,但有人可以告诉我这里有什么问题吗?我想对字符串进行排序,但它显示无法读取 charCodeAt 属性。谢谢;
您遇到越界问题。当您尝试将第一个字符的 charCodeAt 与第二个字符进行比较时会发生这种情况,而第二个字符不存在(例如,在数组的末尾,您没有更多的字符可以与之比较)。
正如我们在评论中讨论的那样,您只需要按字母的 charCodeAt 对字符串进行排序,因此您可以使用此代码对字符串进行排序:
function bubbleSort(ar) {
for (var i = (ar.length - 1); i >= 0; i--) {
for (var j = 1; j <= i; j++) {
if (ar[j-1] > ar[j]) {
var temp = ar[j-1];
ar[j-1] = ar[j];
ar[j] = temp;
}
}
}
return ar;
}
function sortString(input) {
return bubbleSort(
input
.split('')
.map(function(char) {
return char.charCodeAt(0)
})
).map(function(charCode) {
return String.fromCharCode(charCode);
}).join('');
}
console.log(sortString('abcabcabc')); // => "aaabbbccc"
console.log(sortString('вбавбавба')); // => "ааабббввв"
参考:https://www.cs.cmu.edu/~adamchik/15-121/lectures/Sorting%20Algorithms/sorting.html
<script>
var str=prompt('enter');
var a= str.split('');
for (j=0; j<str.length; j++){
for(i=j; i<str.length; i++)
{
if(a[i].charCodeAt(0) > a[i+1].charCodeAt(0))
{
var b= a[i];
a[i]=a[i+1];
a[i+1]=b;
}
}
}
str=a.join('');
document.write(str);
</script>
我知道排序方法更有效,但有人可以告诉我这里有什么问题吗?我想对字符串进行排序,但它显示无法读取 charCodeAt 属性。谢谢;
您遇到越界问题。当您尝试将第一个字符的 charCodeAt 与第二个字符进行比较时会发生这种情况,而第二个字符不存在(例如,在数组的末尾,您没有更多的字符可以与之比较)。
正如我们在评论中讨论的那样,您只需要按字母的 charCodeAt 对字符串进行排序,因此您可以使用此代码对字符串进行排序:
function bubbleSort(ar) {
for (var i = (ar.length - 1); i >= 0; i--) {
for (var j = 1; j <= i; j++) {
if (ar[j-1] > ar[j]) {
var temp = ar[j-1];
ar[j-1] = ar[j];
ar[j] = temp;
}
}
}
return ar;
}
function sortString(input) {
return bubbleSort(
input
.split('')
.map(function(char) {
return char.charCodeAt(0)
})
).map(function(charCode) {
return String.fromCharCode(charCode);
}).join('');
}
console.log(sortString('abcabcabc')); // => "aaabbbccc"
console.log(sortString('вбавбавба')); // => "ааабббввв"
参考:https://www.cs.cmu.edu/~adamchik/15-121/lectures/Sorting%20Algorithms/sorting.html