无法完全打印Javascript数组

时间:2016-11-20 16:17:36

标签: javascript arrays loops

我正在尝试遍历数字数组并打印其所有元素

var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function q(arr) {
  for(var i=0; i<arr.length; i++) {
    if(arr[i]) {
      console.log(arr[i]);
    }
  }
}

q(arr);

该数组包含11个元素,但我的代码只打印10个(除了第1个元素)。但为什么?我怎么能完全打印我的阵列?

谢谢

5 个答案:

答案 0 :(得分:3)

在数组元素0 is a falsy value中,因为有if语句检查元素是truthy,所以不会打印它。

如果您只想迭代,则没有理由使用if条件,因此请删除if条件以使其打印。

var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function q(arr) {
  for (var i = 0; i < arr.length; i++) {
    console.log(arr[i]);
  }
}

q(arr);

仅供参考:如果您想避免空值,请改用条件arr[i] !== null

答案 1 :(得分:1)

问题出在你的if语句中。 arr [0]返回0,这是一个假值,因此if语句中的代码将不会被执行。删除if语句,它应该工作,因为我总是&lt;比数组的长度

答案 2 :(得分:0)

只要删除条件。当if(arr[0])不满意时

var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function q(arr) {
  for(var i=0; i<arr.length; i++) {
    
      console.log(arr[i]);
    
  }
}

q(arr);

答案 3 :(得分:0)

只检查每个元素!== null

var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function q(arr) {
  for(var i=0; i<arr.length; i++) {
    if(arr[i] != null) {
      console.log(arr[i]);
    }
  }
}

q(arr);

答案 4 :(得分:-1)

arr数组(0)的第一个元素在false语句中评估为if

以下是工作片段:

var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function q(arr) {
  for(var i=0; i<arr.length; i++) {
    if(arr[i] || arr[i] === 0) {
      console.log(arr[i]);
    }
  }
}

q(arr);

要获得您想要的内容,您的if语句应如下所示:arr[i] || arr[i] === 0。我建议你阅读强制以了解真正发生的事情。

你真的不需要if声明