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 }
已解决
悬赏分:70
- 解决时间 2021-11-26 17:41
点赞 0反对 0举报 0
收藏 0
分享 0
回答1
最佳
-
randomSort = (arr, filter) => { let list = arr.filter(filter).sort(() => .5 - Math.random()) return arr.map(item => filter(item) ? list.pop() : item) } randomSort(arr, item => ['2', '4', '5'].includes(item.id))
支持 0 反对 0 举报2021-11-26 11:52