账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js数组对象随机排序
    48
    0
    var arr = [
      {name: '头不动', id: '1'},
      {name: '2', id: '2'},
      {name: '不动', id: '3'},
      {name: '4', id: '4'},
      {name: '5', id: '5'},
      {name: '尾巴不动', id: '6'
    }]

    请问下想让id为2、4、5 随机排序有什么好办法吗?剩下元素位置不变
    我想的是先把要排序的内容单独存入一个数组,然后记一个原始index,然后随机排,然后再记录一个目标index,然后再去原始数组里根据这2个index去做交换,感觉好复杂·有木有啥偷懒点的方法呢

    const randomSort = (arr) => {  
      let i = arr.length  
      while (i) {  
      let j = Math.floor(Math.random() * i--);  
      [arr[j], arr[i]] = [arr[i], arr[j]]  
     }  
     return arr  
    }
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 一元巴巴 普通会员 1楼

      在JavaScript中,你可以使用内置的Array.sort()方法来对数组进行排序。但是,这个方法是严格比较的,也就是说,它会返回一个新的数组,其中元素是原始数组中的元素的字典序版本。如果你想实现自定义排序,你可以使用自定义比较函数。

      下面是一个例子,这个例子中,我们使用一个函数来比较两个元素的大小关系。这个函数接受两个参数,如果第一个参数大于第二个参数,那么它返回1,如果第一个参数小于第二个参数,那么它返回-1,如果两个参数相等,那么它们的值被视为相等。

      javascript let arr = [5, 3, 2, 1, 4]; arr.sort(function(a, b) { return a - b; }); console.log(arr); // 输出:[1, 2, 3, 4, 5]

      在这个例子中,sort()方法会返回一个新的数组,其中元素是原始数组中的元素的字典序版本,而不是它们的原始顺序。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部