在javascript中遍历映射中的数组

在javascript中遍历映射中的数组,javascript,arrays,Javascript,Arrays,我是javascript新手,我很难理解如何使用键数组提取映射,然后从映射中的数组中提取值,而不完全重新创建映射。我的两个数据结构看起来像 var keys = ["key1","key2","key3"] var data = { "key1": { "target": "hostname", "datapoints": [ [12, 1.42472334E9], [13, 1.424723355E9], [14, 1.4247

我是javascript新手,我很难理解如何使用键数组提取映射,然后从映射中的数组中提取值,而不完全重新创建映射。我的两个数据结构看起来像

var keys = ["key1","key2","key3"]

var data = {
"key1": {
    "target": "hostname",
    "datapoints": [
        [12, 1.42472334E9],
        [13, 1.424723355E9],
        [14, 1.42472337E9]]},
"key2": {
    "target": "hostname",
    "datapoints": [
        [15, 1.42472334E9],
        [16, 1.424723355E9],
        [17, 1.42472337E9]]}}
我试图提取数据点,将它们放入两个数组中,以便基于键绘制图形。尝试像这样迭代:

for (var k in key)
    for (var v in data[key][datapoints])

这显然不是正确的方法。有没有更好的方法在不拆开地图的情况下获取数据?

如果您想要一个数据点数组,可以执行类似于
data.key1.datapoints[0]
的操作。这将为您提供存储在键1下的数据点数组。

您可以循环通过数组
,然后提取
数据点
,如下所示:

for (var i=0; i < keys.length; i++) {
    var datapoints = data[keys[i]].datapoints;
    // do whatever you want to do with the datapoints. 
    // It's not clear from your question.
}
for(变量i=0;i
打开浏览器javascript控制台(按F12键)查看演示中的输出

var-keys=[“key1”、“key2”、“key3”]
风险值数据={
“关键1”:{
“目标”:“主机名”,
“数据点”:[
[12,1.42472334E9],
[13,1.424723355E9],
[14,1.42472337E9]],
“键2”:{
“目标”:“主机名”,
“数据点”:[
[15,1.42472334E9],
[16,1.424723355E9],
[17,1.42472337E9]]
}
//循环遍历名为keys的数组(注意k是一个索引/整数)
for(键中的变量k){
//检查数据是否将“键”作为属性(即:数据中不存在键3)
if(data.hasOwnProperty(键[k])){
//循环遍历数组datapoints,它是名为data的对象的属性
对于(var i=0;i
欢迎来到Stackoverflow!你能给出一个期望输出的例子吗?期望输出是两个数组。键中的所有数据点。所以一个数组,x是最后一个数组中第一个条目的所有第一部分的内容,y是第二个条目。对于键1,最终结果是两个看起来像的对象var-key1.x_值=[12,13,14]`var-key1.y_值=[1.42472334E9,1.424723355E9,1.42472337E9]`
var keys = ["key1","key2","key3"]

var data = {
"key1": {
    "target": "hostname",
    "datapoints": [
        [12, 1.42472334E9],
        [13, 1.424723355E9],
        [14, 1.42472337E9]]},
"key2": {
    "target": "hostname",
    "datapoints": [
        [15, 1.42472334E9],
        [16, 1.424723355E9],
        [17, 1.42472337E9]]}

}
//loop through the array named keys (mind that k is an index/integer)
for (var k in keys){
    //check if data has "key" as property (ie: key3 does not exist in data)
    if(data.hasOwnProperty(keys[k])){
        //loop through the array datapoints which is a property of the object named data 
        for ( var i =0; i< data[keys[k]]["datapoints"].length; i++){
          console.log(data[keys[k]]["datapoints"][i]); //outputs an array with 2 elements
        }
    }else{console.log(keys[k]+" does not exist in data")}

}