我只是想练习Javascript,所以我尝试这个简单的代码。 在我的预期中,输出应该是整个列表。
当我使用这段代码时,我只能获得输出 [5,9,17,14,4,19,11,8,13,10,18,15,16,20]
我不知道发生了什么,[1,0,2,3,6,7,12 ...]
在哪里
var li = [5,9,17,14,1,0,4,19,11,6,8,13,10,2,18,15,16,3,12,7,20]
var length = li.length;
var x = [];
for(var i = 0; i < length; i++){
if(!(li[i]in x)){
x.push(li[i]);
};
}
console.log(x);
答案 0 :(得分:8)
条件检查if(!(li[i]in x)){
不正确。 in
检查数组中是否存在键(索引)。
更改为if(!x.includes(li[i])){
答案 1 :(得分:3)
从Javascript if in x我得到了
JavaScript确实有一个in运算符,但它会测试键而不是值。
所以,由于您检查了密钥,因此您无法获取这些值 - &gt; 0,1,2,3等等,并且在例如0,1,2,3等处。列表中的第1项已经使用了第1个键。
换句话说,在您的特定情况下,if实际上做的是if(x.length < li[i])
。
在每种情况下,只是澄清if(x.length < li[i])
与!(li[i]in x)
不一样!
要打印整个列表,请使用includes
作为if。 https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
答案 2 :(得分:0)
如果你想在一行打印每一个,请使用console.log(li[I]);
insidr for循环,或删除所有内容并使用console.log[li];
将所有数组打印在一起