字符串排序 这段js代码 输入一个单词 给字母排序 为什么不执行 求大神指教

2025-12-05 16:43:38
推荐回答(1个)
回答1:

两个原因:

1、if (ss[n+1].charCodeAt()< ss[n].charCodeAt()) 这里应该用ss[m]与ss[n]进行比较,如果要交换也应该用ss[m]与ss[n]进行交换

2、string类型一旦声名赋值后就是只读的,因此使用ss[m]=XX的方式对其赋值是无效的,string的值不会改变。

因此代码需要做如下修改:


    function sort(text) {
        var ss = text.toLowerCase();

        var ssArray = [];
        for (var i = 0; i < ss.length; i++) {
            ssArray.push(ss[i]);
        }

        var tep;
        for (var m = ssArray.length - 1; m > 0; m--) {
            for (var n = 0; n < m; n++) {
                if (ssArray[m].charCodeAt() < ssArray[n].charCodeAt()) {
                    tep = ssArray[m];
                    ssArray[m] = ssArray[n];
                    ssArray[n] = tep;
                }
            }
        }
        document.write(ssArray.join(''));
    }
    var s = "cdba";
    sort(s);