JavaScript如何改组数组?

我想改写JavaScript中的元素数组,如下所示:

[0, 3, 3] -> [3, 0, 3]

[9, 3, 6, 0, 6] -> [0, 3, 6, 9, 6]

[3, 3, 6, 0, 6] -> [0, 3, 6, 3, 6]

回答:

使用现代版本的Fisher-Yates随机播放算法:

/**

* Shuffles array in place.

* @param {Array} a items An array containing the items.

*/

function shuffle(a) {

var j, x, i;

for (i = a.length - 1; i > 0; i--) {

j = Math.floor(Math.random() * (i + 1));

x = a[i];

a[i] = a[j];

a[j] = x;

}

return a;

}

回答:

/**

* Shuffles array in place. ES6 version

* @param {Array} a items An array containing the items.

*/

function shuffle(a) {

for (let i = a.length - 1; i > 0; i--) {

const j = Math.floor(Math.random() * (i + 1));

[a[i], a[j]] = [a[j], a[i]];

}

return a;

}

但是请注意,,将变量与解构分配交换会导致严重的性能损失。

回答:

var myArray = ['1','2','3','4','5','6','7','8','9'];

shuffle(myArray);

以上是 JavaScript如何改组数组? 的全部内容, 来源链接: utcz.com/qa/397575.html

回到顶部