首页  >  文章  >  web前端  >  如何优化数组项随机选择而不重复?

如何优化数组项随机选择而不重复?

Linda Hamilton
Linda Hamilton原创
2024-10-30 08:14:27465浏览

How to Optimize Array Item Random Selection Without Repetition?

如何提高数组项随机选择效率

当涉及到随机选择数组项并避免重复时,效率起着至关重要的作用。虽然提供的代码有效地防止连续多次选择相同的项目,但仍有性能增强的潜力。

关于递归问题,提供的函数在技术上不符合递归的条件,因为它不调用自身直接调用,而是通过另一个函数 (chooseName()) 调用自身。然而,它在迭代性质上与递归函数有相似之处。

为了提高效率,可以采用一种替代方法来消除类似递归的行为,并显着减少搜索唯一项所花费的时间。该策略涉及创建一个新函数,该函数随机选择项目,直到数组中的所有项目都用完为止。使用完所有项目后,该函数将从头开始,确保没有重复的项目。

以下代码实现了此方法:

<code class="javascript">function randomNoRepeats(array) {
  var copy = array.slice(0);
  return function() {
    if (copy.length < 1) { copy = array.slice(0); }
    var index = Math.floor(Math.random() * copy.length);
    var item = copy[index];
    copy.splice(index, 1);
    return item;
  };
}

var chooser = randomNoRepeats(['Foo', 'Bar', 'Gah']);
chooser(); // => "Bar"
chooser(); // => "Foo"
chooser(); // => "Gah"
chooser(); // => "Foo" -- only repeats once all items are exhausted.</code>

通过使用此修改后的方法,您可以可以有效地避免重复,同时保持高效的项目选择,而不会像类似递归的实现那样进行冗长的循环迭代。

以上是如何优化数组项随机选择而不重复?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn