如何在for循环中打印整个列表?

时间:2018-05-03 07:44:26

标签: javascript

我只是想练习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);

3 个答案:

答案 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];将所有数组打印在一起