将JSON解析为数组

时间:2017-06-23 22:37:35

标签: javascript arrays json

嗨我解析数据有很大问题。我有这样的结构:

<code>
[{
    "absent": ["a", "b", "c"],
    "against":  ["a", "b", "c"],
    "club": "club1",
    "for":  ["a", "b", "c"],
    "withhold": ["a", "b", "c"]
}, {
    "absent": ["a", "b", "c"],
    "against":  ["a", "b", "c"],
    "club": "club2",
    "for":  ["a", "b", "c"],
    "withhold": ["a", "b", "c"]
}, {
    "absent": ["a", "b", "c"],
    "against":  ["a", "b", "c"],
    "club": "club3",
    "for":  ["a", "b", "c"],
    "withhold": ["a", "b", "c"]
}]
</code>

我需要将这个结构解析为这样的数组:

<code>
    array={a,"absent",clube1
    b,absent,clube1
    c,absent,clube1
    a,against,clube1
    b,against,clube1
    c,against,clube1
    a,for,clube1
    b,for,clube1
    c,for,clube1
    a,withhold,clube1
    b,withhold,clube1
    c,withhold,clube1

    a,absent,clube2
    b,absent,clube2
    c,absent,clube2
    a,against,clube2
    b,against,clube2
    c,against,clube2
    a,for,clube2
    b,for,clube2
    c,for,clube2
    a,withhold,clube2
    b,withhold,clube2
    c,withhold,clube2
    }
</code>

...等 有谁能够帮我 ?我使用纯Java脚本。我无法改变这种结构,所以只有一种方法是编写代码来解决这个问题。感谢您的帮助,对不起我的英语。

2 个答案:

答案 0 :(得分:0)

这应该可以解决问题,它基本上映射整个结构:

data.map((el) =>
    Object.keys(el)
        .filter((key) => key !== "club")
        .map((key) => el[key].map((v) => [v, key, el["club"]]))
).join()

对于OP的其他格式:

data.map((el) =>
    Object.keys(el)
        .filter((key) => key !== "club")
        .map((key) => el[key].map((v) => [v, key, el["club"]]))
).reduce((arr, el) => arr.concat(el.reduce((x, a) => x.concat(a), [])), [])

答案 1 :(得分:0)

var arr = [{
    "absent": ["a", "b", "c"],
    "against":  ["a", "b", "c"],
    "club": "club1",
    "for":  ["a", "b", "c"],
    "withhold": ["a", "b", "c"]
}, {
    "absent": ["a", "b", "c"],
    "against":  ["a", "b", "c"],
    "club": "club2",
    "for":  ["a", "b", "c"],
    "withhold": ["a", "b", "c"]
}, {
    "absent": ["a", "b", "c"],
    "against":  ["a", "b", "c"],
    "club": "club3",
    "for":  ["a", "b", "c"],
    "withhold": ["a", "b", "c"]
}];

//console.log(arr);
var arr2 = [];
for(var i = 0; i < arr.length; i++) {
    var ab = arr[i].absent;
    for (var key in arr[i]) {
        if (arr[i].hasOwnProperty(key)) {
            for(var j = 0; j < ab.length; j++) {
                arr2.push(ab[j], key, arr[i].club);
            }
        }
    }
}
//console.log("2: ", arr2);