假设我有一个这样的数组:
let array = [1, 45, 14, 4]
当我查找这些整数的类型时,我得到一个数字类型(正常:完全符合我的预期)
现在假设我声明我的数组:
let array = [].push(1) or [].concat([1,2,3])
现在,如果我尝试使用“typeof”获取类型,我会得到一种字符串
在下面的片段中,数组中的所有整数都是字符串类型。一世 不明白为什么!
PS:我需要严格的类型
var array = [1,2,3,4,5];
for (item in array) { console.log(typeof item); }
答案 0 :(得分:1)
他们是数字
var array = [1,2,3,4,5];
array.push(6);
array = array.concat([7,8,9])
for(var i = 0; i < array.length; i++) {
console.log(typeof array[i])
}
&#13;
如果您检查样本中的item
值,您会发现它不是数组项,而是它们的索引,这就是for/in
的工作原理迭代一个对象(实际上也是一个数组)
var array = [1,2,3,4,5];
for(item in array) {
console.log(typeof item, "type, and item value is: " + item)
}
&#13;
答案 1 :(得分:1)
这里for..in循环遍历键,它是字符串格式的元素索引。因此,这里的类型是每个元素的键的字符串。
虽然typeof数组元素显然是数字。请在下面的代码中查看:
var array = [1,2,3,4,5];
for(item in array) {
console.log(typeof item, item, typeof array[item], array[item])
}
答案 2 :(得分:1)
正如其他人所述,for...in
语句枚举对象的属性名称(键),这里string
正如CRice建议您可以使用forEach
方法枚举array
的成员。
var array = [1,2,3,4,5];
array.forEach(function(item){
console.log(typeof item)
});
答案 3 :(得分:1)
你犯了一个小错误,for(i in arr)
不给你项目而是索引
var array = [1, 2, 3, 4, 'a'];
for(idx in array){
//console.log(typeof array[i])
console.log('index:'+idx+
' item:'+array[idx]+
' typeof:'+typeof array[idx])
}
&#13;
或者您可以使用for循环来直接访问项目:
var array = [1, 2, 3, 4, 'a'];
for (var idx = 0; idx < array.length; idx++) {
console.log(array[idx]+':'+typeof array[idx])
}
&#13;
第三个选项是使用forEach():
var array = [1, 2, 3, 4, 'a'];
array.forEach( item=> console.log(item+':'+typeof item) )
&#13;