如何打印数组元素?

时间:2019-05-22 17:41:47

标签: javascript arrays typescript

我正在尝试将数组元素打印到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

但是我希望它能打印每个数组元素

5 个答案:

答案 0 :(得分:2)

您可以使用for ... of statement来获取元素,而不要使用for ... in statement来获取数组的索引。

  

Difference between for...of and for...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]))