JavaScript迭代多个嵌套集

美度

我正在构建一个PhoneGap“应用程序”(发现很难解决问题和正在工作),并具有一些动态JSON结果,这些结果需要迭代一些不同的子集才能显示易于理解的页面。

数据看起来像这样(例如),在一些子集country1 / country2中可能有多个,单个或没有一个

{
months: [
  {
  index: 201602,
  year: "2016",
  mon: "February",
  country1: [
  {
    index: 12345678,
    l: [
      {
      name: "Test1",
      mname: "Test 1",
      net: "February 10, 2016 11:39:00 UTC",
      }
    ]
    },
    {
    index: 23456789,
    l: [
      {
      name: "Test2",
      mname: "Test 2",
      net: "February 10, 2016 11:39:00 UTC",
      }
    ]
    }
  ],
  country2: [ ]
},
{
index: 201603,
year: "2016",
mon: "March",
country1: [
{
    index: 546547657654,
    l: [
      {
      name: "Test1",
      mname: "Test 1",
      net: "March 10, 2016 11:39:00 UTC",
      }
    ]
}
],
country2: []
},
{
index: 201604,
year: "2016",
mon: "April",
country1: [ ],
country2: [
{
    index: 78676756,
    l: [
      {
      name: "Test1",
      mname: "Test 1",
      net: "April10, 2016 11:39:00 UTC",
      }
    ]
}
]
}
]
}

我能够将JSON.parse解析为一个变量,当我console.log out时我得到

 { months:
   [ { index: 201602,
       year: '2016',
       mon: 'February',
       launches: [Object],
       tbds: [Object] },
     { index: 201603,
       year: '2016',
       mon: 'March',
       launches: [],
       tbds: [Object] },
     { index: 201604,
       year: '2016',
       mon: 'April',
       launches: [],
       tbds: [Object] } ] }

然后,我使用此代码尝试获取值,但是无论我尝试了什么(点形成,索引),我都无法获取要显示的值(我成功地一次获得了“ undefined-undefined”!

  for(var test in data.months){
    console.log(data.months[test]);
    var year = test.index[i].year;
    // var month = data.months.index.mon;
    s += "<p>" + year + "-" + month + "</p>";
  }
    $launchDiv.html(s);

有人愿意帮助我并解释如何处理吗?

谢谢!

拉杰什

您可以使用Array.prototype.forEach()

问题

var year = test.index[i].year;
// var month = data.months.index.mon;

首先,测试是属性,而不是obj。所以应该data.months[test]

其次,index是属性,而不是数组。所以index[i]undefined这样的index[i].year你应该宁愿尝试data.months[test].year

逻辑

var result = "";
obj.months.forEach(function(item) {
  result += "<p>" + item.year + "-" + item.mon + "</p>";
  item.country1.forEach(function(c) {
    result += getObjectInString(c.l[0]);
  });
  item.country2.forEach(function(c) {
    result += getObjectInString(c.l[0]);
  });
});
document.getElementById("content").innerHTML = result;

function getObjectInString(obj) {
  var keys = Object.keys(obj);
  var result = "<ul>";
  keys.forEach(function(k) {
    result += "<li>" + k + " : " + obj[k] + "</li>";
  });
  result += "</ul>"
  return result;
}

代码样例

var obj = {
  months: [{
    index: 201602,
    year: "2016",
    mon: "February",
    country1: [{
      index: 12345678,
      l: [{
        name: "Test1",
        mname: "Test 1",
        net: "February 10, 2016 11:39:00 UTC",
      }]
    }, {
      index: 23456789,
      l: [{
        name: "Test2",
        mname: "Test 2",
        net: "February 10, 2016 11:39:00 UTC",
      }]
    }],
    country2: []
  }, {
    index: 201603,
    year: "2016",
    mon: "March",
    country1: [{
      index: 546547657654,
      l: [{
        name: "Test1",
        mname: "Test 1",
        net: "March 10, 2016 11:39:00 UTC",
      }]
    }],
    country2: []
  }, {
    index: 201604,
    year: "2016",
    mon: "April",
    country1: [],
    country2: [{
      index: 78676756,
      l: [{
        name: "Test1",
        mname: "Test 1",
        net: "April10, 2016 11:39:00 UTC",
      }]
    }]
  }]
}
var result = "";
obj.months.forEach(function(item) {
  result += "<p>" + item.year + "-" + item.mon + "</p>";
  item.country1.forEach(function(c) {
    result += getObjectInString(c.l[0]);
  });
  item.country2.forEach(function(c) {
    result += getObjectInString(c.l[0]);
  });
});
document.getElementById("content").innerHTML = result;

function getObjectInString(obj) {
  var keys = Object.keys(obj);
  var result = "<ul>";
  keys.forEach(function(k) {
    result += "<li>" + k + " : " + obj[k] + "</li>";
  });
  result += "</ul>"
  return result;
}
<div id="content"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

迭代嵌套的Python字典

来自分类Dev

Javascript:在多个轴/方向上迭代/循环?

来自分类Dev

XML到SQL结果集。多个嵌套级别

来自分类Dev

如何通过$ _POST进行迭代以通过PDO更新数据库中的多个记录集

来自分类Dev

如何嵌套迭代器?

来自分类Dev

从嵌套集模型javascript创建JSON

来自分类Dev

嵌套迭代器的循环

来自分类Dev

Python:避免使用多个嵌套的for循环迭代字符串

来自分类Dev

使用JavaScript将多个数组迭代到对象中

来自分类Dev

嵌套多个javascript方法

来自分类Dev

多个嵌套的for循环仅在R中的i = j = k索引下迭代

来自分类Dev

基于多个条件的Javascript数组排序(一次迭代)

来自分类Dev

如何创建多个数据集,每个数据集在for循环中迭代一次?

来自分类Dev

迭代嵌套对象

来自分类Dev

如何迭代Javascript中的嵌套对象数组

来自分类Dev

使用子过程迭代多个嵌套结果

来自分类Dev

jQuery的迭代函数嵌套

来自分类Dev

嵌套递归迭代器

来自分类Dev

嵌套游标,多个结果集

来自分类Dev

如何迭代嵌套的if语句?

来自分类Dev

嵌套地图迭代器

来自分类Dev

迭代嵌套数组

来自分类Dev

单独的嵌套迭代

来自分类Dev

嵌套字典 - 关闭迭代

来自分类Dev

python嵌套for循环迭代

来自分类Dev

迭代python嵌套列表

来自分类Dev

嵌套 For 循环迭代

来自分类Dev

如何在javascript中迭代多个标题

来自分类Dev

嵌套 for 循环进行迭代