【问题标题】:looping through an array of arrays循环遍历数组数组
【发布时间】:2018-06-10 10:42:07
【问题描述】:

我刚刚学习 Javascript 编程,但在循环数组数组时遇到了问题。我需要一个编码程序来解决它。

我想打印出数组中的每个单独的数组。 我试图使用 Map,但是一旦键入 break,它就会返回第一个数组的键和值。我只需要一个代码来帮助我分别打印出每个数组的每个键和值。

var arrOfArr = [
    ['one', 1],
    ['two', 2],
    ['three', 3]
]

var newmap = new Map(arrOfArr)
for (const [key, values] of newmap.entries()) {
    newmap.forEach((values, key )  => console.log(key, values))
} 

【问题讨论】:

    标签: javascript arrays dictionary


    【解决方案1】:

    您可以简单地使用.forEach 方法

    forEach() 方法对每个数组元素执行一次提供的函数。

    这样您就可以遍历arrOfArr 并用键/值对填充obj

    对于arrOfArr 中的每个数组元素,您可以使用e[0] 选择键(子数组中的第一项),使用e[1] 选择它的值(子数组中的第二项)。

    然后写obj[e[0]] = e[1]obj中添加一个新的键/值对


    代码如下:

    var arrOfArr = [ ['one', 1], ['two', 2], ['three', 3] ];
    
    const obj = {}
    arrOfArr.forEach(e => {
      obj[e[0]] = e[1]
    })
    
    console.log(obj)

    或者如果您只想单独打印它们,您需要obj。因此使用:

    var arrOfArr = [ ['one', 1], ['two', 2], ['three', 3] ];
    
    arrOfArr.forEach( e => console.log(`${e[0]} => ${e[1]}`) )

    【讨论】:

    • 可以说我只想 console.log() 数组中的第二个数组,我该怎么做??
    • 你的意思是123
    • 如果你想输出['two', 2]然后写arrOfArr[1]
    【解决方案2】:

    使用 ES6 解构赋值,你可以用一行来实现:

    arrOfArr.forEach(([key, value]) => console.log(key, value));
    

    【讨论】:

      【解决方案3】:

      首先,看看下面对 Node REPL 的尝试。

      参考:Using iterator on Map() to iterate over keys and values pairs

      > var arrOfArr = [
      ...     ['one', 1],
      ...     ['two', 2],
      ...     ['three', 3]
      ... ]
      undefined
      >
      > var newMap = new Map(arrOfArr)
      undefined
      > newMap
      Map { 'one' => 1, 'two' => 2, 'three' => 3 }
      >
      > var iteratorObj = newMap[Symbol.iterator]();
      undefined
      >
      > // Printing keys and values
      undefined
      > for (let item of iteratorObj) {
      ... console.log(item[0], item[1])
      ... }
      one 1
      two 2
      three 3
      undefined
      >
      

      现在,在线试用。

      var arrOfArr = [
          ['one', 1],
          ['two', 2],
          ['three', 3]
      ]
      
      var newMap = new Map(arrOfArr)
      
      var iteratorObj = newMap[Symbol.iterator]();
      
      // Printing keys and values
      for (let item of iteratorObj) {
      	console.log(item[0], item[1])
      }

      【讨论】:

      • 可以说我只想 console.log() 数组中的第二个数组,我该怎么做??
      • Map { 'one' => 1, 'two' => 2, 'three' => 3 } 不像数组那样被索引,因此很难直接访问它的任何项目。阅读“应该注意,作为对象的映射的 Map,尤其是字典的字典,只会映射到对象的插入顺序——它是随机的而不是有序的。”来自@987654322 @。所以在这种情况下,最好使用console.log(arrOfArr[1]); 来打印第二个数组。
      【解决方案4】:

      arrOfArr 是一个 Array,其中包含 3 个 Arrays

      JavaScript 数组是零索引的:数组的第一个元素位于索引 0 处,最后一个元素位于等于数组长度属性值减 1 的索引处。使用无效的索引号返回未定义。

      有用的链接:MDN Array

      例子:

      var arrOfArr = [['one', 1],['two', 2],['three', 3]]
      
      // First array INDEX 0
      console.log("First: ", arrOfArr[0]);
      
      // Second array INDEX 1
      console.log("Second: ", arrOfArr[1]);
      
      // Third array INDEX 2
      console.log("Third: ", arrOfArr[2]);

      【讨论】:

        猜你喜欢
        • 2014-06-04
        • 1970-01-01
        • 2019-07-10
        • 1970-01-01
        • 1970-01-01
        • 2018-04-01
        • 2013-12-16
        相关资源
        最近更新 更多