【发布时间】:2019-01-04 17:25:28
【问题描述】:
我目前正在为一个项目编写 JavaScript 代码,在该项目中我需要基于原始数组创建修改后的数组。在随机选择需要修改的原始数组的元素时,我遇到了问题。出于项目的目的,我需要跟踪每个元素的原始位置,但我也不能两次选择相同的元素。
到目前为止,我一直在随机选择一个项目:
var originalArray = [1, 2, 4, 3, 5, 2, 5];
var modifiedArray = [];
var copyOriginalArray = originalArray;
var score = Math.floor(Math.random() * copyOriginalArray.length);
var targetScore = copyOriginalArray[score];
targetProfile.push(targetScore);
copyOriginalArray.splice(score, 1);
但问题是,虽然它会随机选择一个项目并确保不会再次选择它,但它不允许我跟踪项目的原始位置。此外,由于某些项目可能相同,因此我不能简单地将它们追溯到原始数组。
你建议做什么?
非常感谢!
【问题讨论】:
-
不是您的主要问题的答案,但要小心
var copyOriginalArray = originalArray;这不是数组的副本 - 它是引用同一个数组的两个变量! -
定义数组时出现语法错误,缺少
= -
为什么不采用索引数组,将其随机化并用于选取值。
-
此外,如果您的代码实际运行,它确实可以帮助我们了解您想要做什么。你有一些没有定义但看起来很重要的变量,比如
copyUser,让事情变得混乱 -
抱歉这些错误,我写了新代码,还从我的项目中复制了一些代码,忘记修改变量的名称。我希望现在更清楚了!运行它的问题是代码实际上要复杂得多,我只是试图简化它以解决这个特定问题。感谢您的帮助。
标签: javascript arrays random