【问题标题】:Iterate through an array in a map in javascript在javascript中遍历地图中的数组
【发布时间】:2015-02-25 18:12:08
【问题描述】:

我是 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])

显然不是正确的做法。有没有更好的方法来获取数据而无需拆开地图?

【问题讨论】:

  • 欢迎来到 Stackoverflow!您可以发布所需输出的示例吗?
  • 所需的输出是两个数组。在密钥中的所有数据点中。所以一个 x 数组,它是最终数组中第一个条目的所有第一部分的内容,而 y 将是第二个条目。最终结果,对于关键一将是两个看起来像的对象。 ` var key1.x_values = [12,13,14]` ` var key1.y_values = [1.42472334E9,1.424723355E9,1.42472337E9]`

标签: javascript arrays


【解决方案1】:

打开浏览器的 javascript 控制台(按 F12)查看演示中的输出。

jsfiddle demo

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")}

}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您可以遍历数组keys,然后像这样提取datapoints

      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.
      }
      

      【讨论】:

        猜你喜欢
        • 2013-05-06
        • 2016-02-18
        • 2022-01-04
        • 1970-01-01
        • 2018-02-14
        • 2015-01-15
        • 2022-08-01
        • 2012-01-07
        • 2013-06-11
        相关资源
        最近更新 更多