简单JavaScript数组代码错误,拾取数组的元素并删除

简单JavaScript数组代码错误,拾取数组的元素并删除,javascript,arrays,Javascript,Arrays,我正在尝试将1、2或3个没有声誉的数据推送到nosamenumbers数组。 但是,控制台有时会给我输出[1,1][2,2] 我在numbers数组中选择一个数字,然后按下noSameNumbers,然后删除我在数组中选择的文本 同样的代码,但控制台给了我奇怪的数据 为什么? 您的numbers.splice不正确,因此同一个数字有可能被选中两次,因为它实际上没有从阵列中删除(而是从阵列中删除了不正确的数字) 与其说要从数组中删除哪个项,不如将要从数组中删除的项的索引传递到函数中。看 要查找要从

我正在尝试将1、2或3个没有声誉的数据推送到nosamenumbers数组。 但是,控制台有时会给我输出[1,1][2,2]

我在numbers数组中选择一个数字,然后按下noSameNumbers,然后删除我在数组中选择的文本

同样的代码,但控制台给了我奇怪的数据

为什么?


您的numbers.splice不正确,因此同一个数字有可能被选中两次,因为它实际上没有从阵列中删除(而是从阵列中删除了不正确的数字)

与其说要从数组中删除哪个项,不如将要从数组中删除的项的索引传递到函数中。看

要查找要从数组中删除的项的索引,请使用

您的固定代码:

var noSameNumbers = [];
var numbers = [1,2,3];

var what = numbers[ Math.floor(Math.random()*numbers.length) ];
noSameNumbers[0] = what;
numbers.splice(numbers.indexOf(what),1); // this is the line I changed

var what2 = numbers[ Math.floor(Math.random() * numbers.length) ];
noSameNumbers[1] = what2;

console.log(noSameNumbers);
var noSameNumbers = [];
var numbers = [1,2,3];

var what = numbers[ Math.floor(Math.random()*numbers.length) ];
noSameNumbers[0] = what;
numbers.splice(numbers.indexOf(what),1); // this is the line I changed

var what2 = numbers[ Math.floor(Math.random() * numbers.length) ];
noSameNumbers[1] = what2;

console.log(noSameNumbers);