循环遍历动态嵌套数据结构js

时间:2017-10-08 22:35:28

标签: javascript arrays loops for-loop nested

我从网上加载JSON并且它有动态嵌套数组,我想循环遍历数据并返回每个父项中的一些项目。

示例数组:

{"records": [ { "status": "in Progress", "form_values": { "1111": "Sam johnes", "2222": { "choice_values": [ "John smith" ], }, } } { "status": "in Progress", "form_values": { "1111": "john smith", } } { "status": "completed", "form_values": { "1111": "john smith", "2222": { "choice_values": [ "bill smith" ], }, } } ] }

我目前正在使用for循环,但它返回一个类型错误,因为它无法读取" choice_values"的属性。循环看起来像:

   for (i = 0; i < data.records.length; i++) {

   var status = [data.records[i].status];
   var name = [data.records[i].form_values["2222"].choice_values["0"]];

   var Result = [status, name];

 }

Idealy结果将等于:

{0} [in progress, john smith]
{1} [in progress, undefined]
{2} [Completed, bill smith]

2 个答案:

答案 0 :(得分:0)

您的语法不正确。

Look at form_values["222"].choice_values["0"];

应该是

for (i = 0; i < data.records.length; i++) {

   var status = [data.records[i].status];
   var Name = [data.records[i].form_values.["2222"].choice_values["0"]];

   var Result = [status, Name];

 }

您的代码:

malloc()

答案 1 :(得分:0)

  1. var 2222 - javascript中的变量不能以数字
  2. 开头
  3. var 2222 = [data.records[i].form_values.["2222"].choice_values["0"]; - 错过了结束] ...或者,[之前的data不正确
  4. var status = [data.records[i].status] - 您确定要status成为包含单个元素的数组吗?
  5. .form_values.["2222"].choice_values应为.form_values["2222"].choice_values - 在.
  6. 之后删除form_values
  7. var Result = [status, 2222]; - 结果只会是for循环的最后一次迭代的值
  8. 您的示例数据格式错误,,数组
  9. 项之间缺少records
  10. 第二条记录没有form_values.2222属性,因此您的代码需要在盲目假设存在之前对其进行测试
  11. Result将为[ ["completed"], ["bill smith"] ] - 请注意嵌套数组 - 是您的期望吗? (我看到它不是

    修复以上所有内容:

    &#13;
    &#13;
    var data = {
        "records": [{
            "status": "in Progress",
            "form_values": {
                "1111": "Sam johnes",
                "2222": {
                    "choice_values": [
                        "John smith"
                    ],
                },
            }
        },{
            "status": "in Progress",
            "form_values": {
                "1111": "john smith",
            }
        },{
            "status": "completed",
            "form_values": {
                "1111": "john smith",
                "2222": {
                    "choice_values": [
                        "bill smith"
                    ],
                },
            }
        }]
    };
    var Result = data.records.map(function(record) {
        var a2222;
        if (record.form_values["2222"]) {
            a2222 = record.form_values["2222"].choice_values[0];
        }
        return [record.status, a2222];
    });
    console.log(Result);
    &#13;
    &#13;
    &#13;