嗨我有一个来自MongoDB的列的JavaScript对象数组。列包含其键和值作为数组。这是我的代码
[
{
"F":"Age Min",
"H":"Age Min",
"L":"",
"V":[
"1",
"2",
"3"
]
},
{
"F":"Age Max",
"H":"Age Max",
"L":"",
"V":[
"12",
"30",
"4"
]
}
]
我想要的输出是
[
{
"Age Min":1,
"Age Max":12
},
{
"Age Min":2,
"Age Max":30
},
{
"Age Min":3,
"Age Max":4
}
]
需要帮助,我正在努力获得所需的输出。 感谢。
答案 0 :(得分:1)
var input = [
{
"F":"Age Min",
"H":"Age Min",
"L":"",
"V":[
"1",
"2",
"3"
]
},
{
"F":"Age Max",
"H":"Age Max",
"L":"",
"V":[
"12",
"30",
"4"
]
}
];
var output = [];
for (var i = 0; i < input.length; i++) {
var prop = input[i];
for (var j = 0; j < prop.V.length; j++) {
if (j >= output.length) { output[j] = {}; }
var o = output[j];
o[prop.F] = prop.V[j];
}
}
console.log(output);
答案 1 :(得分:1)
您可以迭代外部数组和内部数组,并使用转置数据构建一个新对象。
var array = [{ F: "Age Min", H: "Age Min", L: "", V: ["1", "2", "3"] }, { F: "Age Max", H: "Age Max", L: "", V: ["12", "30", "4"] }],
result = array.reduce(function (r, a) {
a.V.forEach(function (b, i) {
r[i] = r[i] || {};
r[i][a.F] = b;
});
return r;
}, []);
console.log(result);
&#13;
ES6风格小巧。
var array = [{ F: "Age Min", H: "Age Min", L: "", V: ["1", "2", "3"] }, { F: "Age Max", H: "Age Max", L: "", V: ["12", "30", "4"] }],
result = array.reduce((r, a) => (a.V.forEach((b, i) => (r[i] = r[i] || {})[a.F] = b), r), []);
console.log(result);
&#13;
答案 2 :(得分:0)
您可以使用Array#reduce
和Array#forEach
重新构建数据:
var data = [{
"F": "Age Min",
"H": "Age Min",
"L": "",
"V": ["1", "2", "3"]
},
{
"F": "Age Max",
"H": "Age Max",
"L": "",
"V": ["12", "30", "4"]
}
]
var result = data.reduce(function(result, field, init) {
field.V.forEach(function(value, i) {
if (!init) result[i] = {}
result[i][field.F] = +value
})
return result
}, [])
console.log(result)
&#13;
.as-console-wrapper { min-height: 100%; }
&#13;