我正在尝试遍历数字数组并打印其所有元素
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个元素)。但为什么?我怎么能完全打印我的阵列?
谢谢
答案 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
声明