【发布时间】:2019-05-20 06:10:39
【问题描述】:
我正在尝试将一个如下所示的数组转换为该数组下方对象的结构。
我已经尝试了很多东西,我也会在下面列出。但我觉得我走错了路。在这方面需要一些帮助。
var array = [
["plan_a", "tester_a", "product", "foo", "blocked", "5"],
["plan_a", "tester_a", "product", "foo", "passed", "10"],
["plan_a", "tester_a", "subproduct", "client", "passed", "15"],
["plan_a", "tester_b", "product", "bar", "blocked", "5"],
["plan_a", "tester_b", "product", "bar", "passed", "10"],
["plan_a", "tester_b", "subproduct", "server", "failed", "5"],
["plan_a", "tester_b", "subproduct", "server", "passed", "5"],
["plan_a", "tester_c", "product", "foo", "failed", "5"]
];
var object = {
plan_a: {
tester_a: {
product: {
product: "foo",
blocked: "5",
passed: "10"
},
subproduct: {
subproduct: "client",
passed: "15"
}
},
tester_b: {
product: {
product: "bar",
blocked: "5",
passed: "10"
},
subproduct: {
subproduct: "server",
failed: "5",
passed: "5"
}
},
tester_c: {
product: {
product: "foo",
failed: "5"
}
}
}
};
我试过这个:
var object = {}
var combining_plans =[]
var first_row = arr[0][0];
for (var i = 0; i < arr.length; i++) {
if (arr[i][0] == first_row) {
object[arr[i][0]] = [];
arr[i].shift();
combining_plans.push(arr[i]);
}
}
object[first_row] = combining_plans;
这会检查第一列是否相同,如果它采用第一个元素将其转换为对象的第一个键,然后将值添加为数组的所有剩余元素。
我一直在考虑对每一列都这样做,但我觉得这可能行不通,还有比这样做更优雅的方法。
【问题讨论】:
标签: javascript arrays json ecmascript-6 javascript-objects