当前位置: 首页 > 面试题库 >

JavaScript如何改组数组?

宇文峰
2023-03-14
问题内容

我想改写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;
}

ES2015(ES6)版本

/**
 * 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);


 类似资料:
  • 修改为新的json数组 所示coords的值是josn1里的x、y代表的值或者相加的值

  • 问题内容: 我正在使用Sencha Touch(ExtJS)从服务器获取JSON消息。我收到的消息是这个: 我的问题是我无法解析此JSON对象,因此我可以使用每个计数器对象。 我正在尝试像这样完成: 我究竟做错了什么 ?谢谢! 问题答案: Javascript具有针对字符串的内置JSON解析,我想这就是您拥有的: 在您的示例中使用此代码将是: 编辑 :for循环的使用中有一个错误(我在初读时就错过

  • 我需要将数组中的值替换为。尝试此操作时,仅显示阵列中的第一条记录。 如何显示数组中的所有条目?

  • 问题内容: 我有以下内容: 如何将类型为sun.org.mozilla.javascript.internal.NativeArray的结果对象转换为相应的Java数组?Somone可以向我显示一个 工作代码示例 吗?它应该适用于String和Integer数组。另外,很高兴知道在哪里寻找在rhino引擎和java之间的其他数据类型转换。 顺便说一句,我知道此页面,但我真的在寻找一个有效的代码示例

  • 问题内容: 您好,我想基于数组中的唯一项合并数组。 我拥有的对象 在这个totalCells数组中,我有几个这样的对象 现在,我想制作一个数组,在该数组中我可以基于lineNumber进行数组组合。 就像我有一个具有lineNumber属性和cellWidth集合的对象。我可以这样做吗? 我可以遍历每一行并检查行号是否相同,然后按该单元格宽度。有什么办法我可以算吗? 我正在尝试获得这样的输出。 问