嗨我解析数据有很大问题。我有这样的结构:
<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脚本。我无法改变这种结构,所以只有一种方法是编写代码来解决这个问题。感谢您的帮助,对不起我的英语。
答案 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);