我正在尝试将数组元素打印到javascript中的每个循环中使用。但是我正在打印一些我无法弄清楚的东西!
let arr=["1,2,3","iosajah","undefined"];
for(let data in arr)
{
console.log(data);// prints 4,0,1,2
if(typeof data === "undefined")
{
//do something
}
}
console.log(data)打印4,0,1,2
但是我希望它能打印每个数组元素
答案 0 :(得分:2)
您可以使用for ... of
statement来获取元素,而不要使用for ... in
statement来获取数组的索引。
Difference between
for...of
andfor...in
for...in
和for ... of语句都迭代某些内容。它们之间的主要区别在于它们迭代的内容。
for...in
语句以任意顺序遍历对象的enumerable properties。
for...of
语句迭代iterable object定义要迭代的值。
let arr = ["1,2,3", "iosajah", "undefined"];
for (let data of arr) {
console.log(data);
}
要按索引顺序获取元素,可以采用标准的for
statement并从第一个元素到数组的末尾。
let arr = ["1,2,3", "iosajah", "undefined"];
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
答案 1 :(得分:1)
for in循环用于遍历对象文字,但是由于Array(以及其他所有对象)实际上是JavaScript中的对象,因此您实际上正在记录Array对象的键(即索引值)。
您要使用forEach
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
let arr=["1,2,3","iosajah","undefined"];
arr.forEach(function(element) {
console.log(element);
});
答案 2 :(得分:1)
我将data
更改为key
,因为这是for... in...
语法产生的结果:迭代过程中对象的键(可能是数组)。您根本不应该打印4
,就像这个打字机游乐场所显示的:Typescript Playground Example
let arr=["1,2,3","iosajah","undefined"];
for(let key in arr)
{
console.log(arr[key]);// prints 0,1,2
if(typeof arr[key] === "undefined")
{
//do something
}
}
如果要遍历数组,最典型的方法是使用.forEach
语法。
let arr=["1,2,3","iosajah","undefined"];
arr.forEach((element, index, arr) => {
console.log(element, index);
if (typeof element === "undefined") {
//do something
}
})
看起来您可能打算在数组中查找字符串undefined
,如果是这种情况,那么您就不想检查typeof
,您只想比较字符串值:
if (element === "undefined") {
}
在此示例中,typeof element
永远不会是值"undefined"
的字符串。
答案 3 :(得分:1)
您的For / In语句将遍历对象的属性。如果您检查数组的长度并逐步执行。我们需要值,而不是属性。您可以用这种方式打印。
let arr=["1,2,3","iosajah","undefined"];
for(i=0;i<arr.length;i++)
{
console.log(arr[i]);
if(typeof data === "undefined"){
//do something
}
}
答案 4 :(得分:1)
for in
遍历对象的可枚举属性名称,您正在打印数组的索引。如果要遍历值,请使用以下方法之一:
for(let value of array)
或
Object.keys(array).map(key => console.log(array[key]))