JokerSoulClub
JokerSoulClub
采纳率100%
2017-10-13 08:49

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>
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • github_38240456 疏真 4年前

    你用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);
    

    这样就可以了

    点赞 评论 复制链接分享
  • u013668349 林新华 4年前

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

    点赞 评论 复制链接分享

相关推荐