【问题标题】:Push json data into nested array将 json 数据推送到嵌套数组中
【发布时间】:2019-12-02 10:04:46
【问题描述】:

我正在尝试构建这个数组:


[{
id: "1", name: labels,
periods: [
{id:"1_1", start: "2018-01-05", end: "2018-01-25"},
{id:"1_2", start: "2018-01-28", end: "2018-02-22"},
{id:"1_3", start: "2018-03-03", end: "2018-03-25"}
]
}];

我有这个 json 数据


labels = ["Workorder 1", ... , "Workorder 10"]
start = ["2019-01-01", ... ,"2019-01-25" ]
end= ["2019-01-10", ... ,"2019-01-25"]

这是我走了多远:


var arr=[];
for ( var i=0; i<labels.length; i++){
newlab = labels[i];
newid = "id" + [i]; 
newstart = start[i];
newstop = end[i];
arr.push({ id:newid, name:newlab, start:newstart, end:newstop })
};
var data = {data:arr};
console.log(data);

输出如下:


data = [
{id: "id0", name: "Workorder 1", start: "2019-01-01", end: "2019-01-10"},
....
{id: "id9", name: "Workorder 10", start: "2019-11-25", end: "2019-01-14"}
]

感谢您的帮助

【问题讨论】:

  • 你的问题很不清楚。请清楚说明您的问题。
  • 嗨@User9023 检查这个helps
  • labels 包含什么值,问题详情缺失,请提供完整详情
  • 然后name 键不在您的预期输出中,但您尝试将其添加到代码中
  • @NarendraChouhan 已添加到我的问题中

标签: javascript


【解决方案1】:

这对你有用,试试这个

var labels = ["Workorder 1", "Workorder 10"]
var start = ["2019-01-01", "2019-01-25"]
var end = ["2019-01-10", "2019-01-25"]

var obj = {}
var finalArray = []
for (var i = 1; i <= start.length; i++) {
    var first = { id: i, name: 'labels' }
    obj = { ...obj, ...first }
    var periods = { id: i + '_' + i, name: labels[i - 1], start: start[i - 1], end: end[i - 1] }
    if (obj.periods) {
        obj.periods.push(periods)
    } else {
        obj.periods = [periods]
    }
    finalArray.push(obj)
}

var data = { data: finalArray };
console.log("finalOutput.............",data)

【讨论】:

    【解决方案2】:
    let labels="test_string",start = [],end=[],arr=[];
    var arr=[],periods =[];
    for ( var i=0; i<labels.length; i++){
    obj = {};
    obj.id= "1", obj.name= "labels"
    newlab = labels[i];
    newid = [i] + "_" + [i];
    newstart = start[i];
    newstop = end[i];
    periods.push({ id:newid, name:newlab, start:newstart, end:newstop })
    obj.periods = periods;
    arr.push(obj)
    };
    let data = {data:arr};
    console.log(data);
    

    【讨论】:

    • 您可以在浏览器或REPL模式下查看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多