【问题标题】:Unable to get desired or similar output on json array object iteration?无法在 json 数组对象迭代中获得所需或类似的输出?
【发布时间】:2017-09-24 11:58:07
【问题描述】:

我有以下 json 对象,我想得到如下所需的输出。

var testdata = [{
        "x": [
            "Jan-10",
            "Feb-10",
            "Mar-10",
            "Apr-10",
            "May-10"
        ],
        "y": [
            "100.0",
            "25.0",
            "100.0",
            "60.0",
            "500.0"
        ],
        "xf": "Jan-10",
        "xl": "May-10",
        "yf": "100.0",
        "yl": "500.0",
        "xtitle": "day",
        "ytitle": "rs"
    },
    {
        "x": [
            "Jan-11",
            "Feb-11",
            "Mar-11",
            "Apr-11",
            "May-11"
        ],
        "y": [
            "450.0",
            "650.0",
            "300.0",
            "70.0",
            "360.0"
        ],
        "xf": "Jan-11",
        "xl": "May-11",
        "yf": "450.0",
        "yl": "360.0",
        "xtitle": "day",
        "ytitle": "rs"
    }
];

我想迭代它并且应该得到类似的输出(y1 和 y2 只是它们的值,这些键可以是任何东西):

[{
        "day": "Jan",
        "y1": "100",
        "y2": "450"
    },
    {
        "day": "Feb",
        "y1": "25",
        "y2": "650"
    },
    {
        "day": "Mar",
        "y1": "100",
        "y2": "300"
    },
    {
        "day": "Apr",
        "y1": "60",
        "y2": "70"
    },
    {
        "day": "May",
        "y1": "500",
        "y2": "360"
    }
]

我试过这样:

if(testdata.length > 0){
         var outarr = [];
          for(var i = 0; i < testdata[0].x.length; i++) {
            outarr.push(
            {
            "x": testdata[0].x[i],
            "y": testdata[0].y[i]
            })
            }
        console.log(JSON.stringify(outarr));
}

但我没有从上述循环中获取实际输出,请告诉我如何执行此操作以获得类似的输出。创建Fiddle。提前致谢!

【问题讨论】:

  • JSON 是一种用于数据交换的文本符号(More here.) 如果您正在处理 JavaScript 源代码,而不是处理 字符串,那么您就不是在处理 JSON。
  • 不清楚您的第一个输入参数是如何映射到所需结果的
  • 引用的代码中没有任何内容可以生成具有名为dayy1y2 的属性的对象。所以这就是开始的地方。
  • @T.J.Crowder,我已经编辑了帖子,这意味着 y1, y2 可以是任何键,但我的值应该像上面那样。我只需要类似的输出,就是这样。
  • @Thusitha,我不想要 eact 输出,只需要类似的输出。请注意,键(y1、y2 可以是任何值,但它们的值应该是正确的),已编辑帖子。

标签: javascript jquery arrays json loops


【解决方案1】:

假设testdata的结构是一致的。

var testdata = [{
        "x": [
            "Jan-10",
            "Feb-10",
            "Mar-10",
            "Apr-10",
            "May-10"
        ],
        "y": [
            "100.0",
            "25.0",
            "100.0",
            "60.0",
            "500.0"
        ],
        "xf": "Jan-10",
        "xl": "May-10",
        "yf": "100.0",
        "yl": "500.0",
        "xtitle": "day",
        "ytitle": "rs"
    },
    {
        "x": [
            "Jan-11",
            "Feb-11",
            "Mar-11",
            "Apr-11",
            "May-11"
        ],
        "y": [
            "450.0",
            "650.0",
            "300.0",
            "70.0",
            "360.0"
        ],
        "xf": "Jan-11",
        "xl": "May-11",
        "yf": "450.0",
        "yl": "360.0",
        "xtitle": "day",
        "ytitle": "rs"
    }
];

if(testdata){
    months = testdata[0]['x'];


    output = [];
    for(var i = 0; i < months.length; i++){
        month = months[i].split('-')[0]
        output.push({
            "month" : month,
            "y1"    : testdata[0]['y'][i],
            "y2"    : testdata[1]['y'][i]
        });
    }

    console.log(output)
}

如果您有两个以上的条目,您当然可以考虑这一点:

if(testdata){
    months = testdata[0]['x'];
    numentries = testdata.length;

    output = [];
    for(var i = 0; i < months.length; i++){
        month = months[i].split('-')[0]

        monthData = {
            "month" : month
        }

        for(var x = 0; x < numentries; x++){
            monthData['y'+x] = testdata[x]['y'][i]
        }

        output.push(monthData);
    }

    console.log(output)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2022-01-22
    相关资源
    最近更新 更多