js算法按照固定顺序去将数组打乱
时间: 2024-10-17 16:07:37 浏览: 14
JavaScript随机打乱数组顺序之随机洗牌算法
在JavaScript中,如果你想要按照固定的顺序对数组进行随机排列(打乱),而这个顺序是已知的,通常可以使用一种叫做“洗牌”(Fisher-Yates Shuffle,也称为Knuth shuffle)的方法。尽管这通常是为了生成真正的随机排列,但是当你有一个预设顺序时,你可以稍微调整一下步骤。
以下是一个简单的示例,假设你有一个预先确定的顺序数组`order[]`,并且你想让原始数组`arr[]`按此顺序打乱:
```javascript
function shuffleArray(arr, order) {
let i = arr.length - 1;
while (i >= 0) {
// 使用order数组的索引作为临时存储位置
const randomIndex = order[i];
// 将arr[randomIndex]的位置元素交换到arr[i]
[arr[i], arr[randomIndex]] = [arr[randomIndex], arr[i]];
// 移动指针向前
i--;
}
return arr;
}
// 示例
const arr = [1, 2, 3, 4, 5];
const order = [2, 0, 4, 1, 3]; // 预设的顺序数组
shuffleArray(arr, order); // 打乱后的数组
```
在这个例子中,`order`数组表示了期望的新顺序,我们从右向左遍历,每次取一个元素并将其放置到原始数组相应的位置上。
阅读全文