js sort(function(a,b){})排序回调函数里如何复制传入的数组里的参数a,b

这里的sort(function(a,b){})a,b都是数组里的引用的方式,无法复制给其他变量后进行replace操作

下面就是样例,希望依据去空格后的字符数量排序,结果sort里传入的值无法完成replace操作,最后结果是包含空格后的字符数量排序。

  <html>
 <head>
 <script>

    var arr = ['c     c','d ddd','eee'];
    arr.sort(function(a,b){
        return pare(a)>pare(b)?1:-1;
    });
    function pare(value){
        value=value.replace(' ','');
        value=value.replace(' ',''); //去除全角空格
        return value.length;
    }
    alert(arr);
 </script>
 </head>
 <body>
 </body>
 </html>

你用value=value.replace(' ','');只能去掉一个空格,去掉所有空格要用正则。
还有就是arr.sort这个函数不会改变arr,排序结果要单独存一下。

 var arr = ['c     c', 'd ddd', 'eee'];
        var result = arr.sort(function (a, b) {
            return pare(a) > pare(b) ? 1 : -1;
        });
        function pare(value) {
            value = value.replace(/\s/g, "");
            // value = value.replace(' ', ''); //去除全角空格
            return value.length;
        }
        alert(result);

这样就可以了

这个是js的数组辅助函数,类似于foreach(funcation(t){})