Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何迭代数组字典(不知道键名)_Javascript_Arrays_Object - Fatal编程技术网

Javascript 如何迭代数组字典(不知道键名)

Javascript 如何迭代数组字典(不知道键名),javascript,arrays,object,Javascript,Arrays,Object,我有一个类似于此的对象: [ {"key1": ["2019-04-12-14:54:29.190", "19", "0", "4325", "1"]}, {"key2": ["2019-04-12-14:54:29.191", "20", "0", "2212", "1"]}, {"key3": ["2019-04-12-14:54:29.192", "22", "0", "4376", "0"]} ] 但是,我不知道钥匙的名称,即我不知道钥匙1、钥匙2和钥匙3的名称

我有一个类似于此的对象:

[
    {"key1": ["2019-04-12-14:54:29.190", "19", "0", "4325", "1"]},
    {"key2": ["2019-04-12-14:54:29.191", "20", "0", "2212", "1"]},
    {"key3": ["2019-04-12-14:54:29.192", "22", "0", "4376", "0"]}
]
但是,我不知道钥匙的名称,即我不知道钥匙1、钥匙2和钥匙3的名称

这几乎正是我想要的,只是该方法要求您知道键的名称

我需要能够遍历键名及其值数组

我试过这个:

for (var i in zk) {
    for (var j in zk[i]) {
        console.log(j)
    }
}

但那只会打印出密钥名。我怎样才能遍历列表呢?在大多数语言中,在j上迭代似乎是合乎逻辑的选择,但在本例中并非如此。有什么想法吗?谢谢。

您错过了必须打印其值的对象

for (var i in zk) {
    for (var j in zk[i]) {
        console.log(zk[i][j])
    }
}

您错过了必须打印其值的对象

for (var i in zk) {
    for (var j in zk[i]) {
        console.log(zk[i][j])
    }
}

让我们从您提供的代码示例继续

1获取每个元素的键

for (let i in zk) {
  for (let j in zk[i]) {
    console.log(j)
  }
}
for (let i in zk) {
  for (let j in zk[i]) {
    console.log(zk[i][j])
  }
}
2获取每个元素中的列表

for (let i in zk) {
  for (let j in zk[i]) {
    console.log(j)
  }
}
for (let i in zk) {
  for (let j in zk[i]) {
    console.log(zk[i][j])
  }
}
3迭代每个元素中的每个列表

for (let i in zk) {
  for (let j in zk[i]) {
    for (let k = 0; k < zk[i][j].length; k++) {
      console.log(zk[i][j][k])
    }
  }
}

让我们从您提供的代码示例继续

1获取每个元素的键

for (let i in zk) {
  for (let j in zk[i]) {
    console.log(j)
  }
}
for (let i in zk) {
  for (let j in zk[i]) {
    console.log(zk[i][j])
  }
}
2获取每个元素中的列表

for (let i in zk) {
  for (let j in zk[i]) {
    console.log(j)
  }
}
for (let i in zk) {
  for (let j in zk[i]) {
    console.log(zk[i][j])
  }
}
3迭代每个元素中的每个列表

for (let i in zk) {
  for (let j in zk[i]) {
    for (let k = 0; k < zk[i][j].length; k++) {
      console.log(zk[i][j][k])
    }
  }
}
如果您尝试迭代并输出每个对象键和相应数组中的每个值,这将非常有用。有更简洁的方法可以做到这一点,但是嵌套循环应该清楚地说明发生了什么

常数arr=[ {key1:[2019-04-12-14:54:29.190,19,04325,1]}, {key2:[2019-04-12-14:54:29.191,20,02212,1]}, {key3:[2019-04-12-14:54:29.192,22,04376,0]} ]; 对于arr的let obj{ 对于Object.entriesobj的let[key,values]{ log`KEY:${KEY}`; console.log'VALUES:'; 对于值的let值{ console.logvalue; } } } //第一个对象的输出示例。。。 //键:键1 //价值观: // 2019-04-12-14:54:29.190 // 19 // 0 // 4325 //如果您试图迭代并输出每个对象键和相应数组中的每个值,则1将非常有用。有更简洁的方法可以做到这一点,但是嵌套循环应该清楚地说明发生了什么

常数arr=[ {key1:[2019-04-12-14:54:29.190,19,04325,1]}, {key2:[2019-04-12-14:54:29.191,20,02212,1]}, {key3:[2019-04-12-14:54:29.192,22,04376,0]} ]; 对于arr的let obj{ 对于Object.entriesobj的let[key,values]{ log`KEY:${KEY}`; console.log'VALUES:'; 对于值的let值{ console.logvalue; } } } //第一个对象的输出示例。。。 //键:键1 //价值观: // 2019-04-12-14:54:29.190 // 19 // 0 // 4325
//1在js中,您总是可以获得密钥,因此您要做的是:

for (var i in zk) {
    for (var j in zk[i]) { // j wil ben key1, key2 ect
        console.log(zk[i][j]); // arrays  ["2019-04-12-14:54:29.190", "19", "0", "4325", "1"] over where you can itterate
        for (var k in zk[i][j]) {
            console.log(zk[i][j][k]); // "2019-04-12-14:54:29.190" ect
        }
    }
}

在js中,您始终可以获得密钥,因此您要做的是:

for (var i in zk) {
    for (var j in zk[i]) { // j wil ben key1, key2 ect
        console.log(zk[i][j]); // arrays  ["2019-04-12-14:54:29.190", "19", "0", "4325", "1"] over where you can itterate
        for (var k in zk[i][j]) {
            console.log(zk[i][j][k]); // "2019-04-12-14:54:29.190" ect
        }
    }
}
使用Object.Value:

常数arr=[ {key1:[2019-04-12-14:54:29.190,19,04325,1]}, {key2:[2019-04-12-14:54:29.191,20,02212,1]}, {key3:[2019-04-12-14:54:29.192,22,04376,0]} ]; arr.forEachobj=>console.logObject.valuesobj; .作为控制台包装{最大高度:100%!重要;顶部:自动;}使用对象。值:

常数arr=[ {key1:[2019-04-12-14:54:29.190,19,04325,1]}, {key2:[2019-04-12-14:54:29.191,20,02212,1]}, {key3:[2019-04-12-14:54:29.192,22,04376,0]} ]; arr.forEachobj=>console.logObject.valuesobj;
.as console wrapper{max height:100%!important;top:auto;}问题是您缺少一个级别的循环。必须在外部数组上循环,然后在每个对象中的键上循环,如果该键的值是数组,则在该数组上循环

例如,若要记录所有值,则可以使用Object.prototype.keys返回对象中的键数组,以便您可以尝试以下操作:

常数arr=[ {key1:[2019-04-12-14:54:29.190,19,04325,1]}, {key2:[2019-04-12-14:54:29.191,20,02212,1]}, {key3:[2019-04-12-14:54:29.192,22,04376,0]} ]; arr.forEachx=>{ Object.keysx.forEachk=>{ if Array.isArrayx[k]{ x[k]。forEachv=>{ console.logv; }; }否则{ console.logx[k]; } };
}; 问题是您缺少一个循环级别。必须在外部数组上循环,然后在每个对象中的键上循环,如果该键的值是数组,则在该数组上循环

例如,若要记录所有值,则可以使用Object.prototype.keys返回对象中的键数组,以便您可以尝试以下操作:

常数arr=[ {key1:[2019-04-12-14:54:29.190,19,04325,1]}, {key2:[2019-04-12-14:54:29.191,20,02212,1]}, {key3:[2019-04-12-14:54:29.192,22,04376,0]} ]; arr.forEachx=>{ Object.keysx.forEachk=>{ if Array.isArrayx[k]{ x[k]。forEachv=>{ console.logv; }; }否则{ console.logx[k]; } }; }; 你可以采取不同的做法 迭代给定数组和对象的etn方法,使用

对于迭代数组

用于获取包含键和值的数组数组以及

用于键/值对数组

var数据=[{key1:[2019-04-12-14:54:29.190,19,04325,1]},{key2:[2019-04-12-14:54:29.191,20,02212,1]},{key3:[2019-04-12-14:54:29.192,22,0476,0]}; data.forEachobject,outerIndex=> Object.entriesobject.forEach[键,数组]=> array.forEachvalue,innerIndex=> console.LogoutIndex,键,innerIndex,值 ;
.作为控制台包装器{max height:100%!important;top:0;}您可以采用不同的方法来迭代给定的数组和对象,使用

对于迭代数组

用于获取包含键和值的数组数组以及

用于键/值对数组

var数据=[{key1:[2019-04-12-14:54:29.190,19,04325,1]},{key2:[2019-04-12-14:54:29.191,20,02212,1]},{key3:[2019-04-12-14:54:29.192,22,0476,0]}; data.forEachobject,outerIndex=> Object.entriesobject.forEach[键,数组]=> array.forEachvalue,innerIndex=> console.LogoutIndex,键,innerIndex,值 ;
.as控制台包装{max height:100%!important;top:0;}zk[i][j]是数组吗?但实际上,您应该更改数据结构,或者使用对象数组,或者使用一个带键的对象进行查找,而不是同时使用这两个键。您可以使用for..of来迭代值,而不是使用key thing.mapObject.values或thing.flatMapObject.values或thing.flatMapObject.values.flat,具体取决于您想要它的方式。zk[i][j]是数组吗?但实际上,您应该更改数据结构,或者使用对象数组,或者使用一个带键的对象进行查找,而不是同时使用这两个键。您可以使用for..of来迭代值,而不是使用key thing.mapObject.values或thing.flatMapObject.values或thing.flatMapObject.values.flat,具体取决于您想要它的方式。