我正在创建一个将三维数组合并为一个对象数组的函数。
示例:
var input = [[['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']],
[['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']]];
结果:
[
{firstName: 'Joe', lastName: 'Blow', age: 42, role: 'clerk'},
{firstName: 'Mary', lastName: 'Jenkins', age: 36, role: 'manager'}
]
所以我所做的是遍历每个数组,然后获取第一个元素和最后一个元素并将其放在一个对象中。
但是我遇到了两件事:
myObj[employeeData[i][j][0]] = employeeData[i][j][k];
仅使用第二个来获取数组中的所有项目
数组维度。在这种情况下,这是一个:
[['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']]];
如果我将对象推入空数组,我将得到以下内容:
[[object Object] { 年龄:36岁, firstName:" Mary", lastName:" Jenkins", 角色:"经理" },[圆形对象对象],[圆形对象对象],[圆形对象对象],[圆形对象对象],[圆形对象对象],[圆形对象对象],[圆形对象对象],[圆形对象对象], [圆形物体对象],[圆形物体对象],[圆形物体物体],[圆形物体物体],[圆形物体物体],[圆形物体物体],[圆形物体物体]]
不确定循环对象是什么意思。
到目前为止,这是我的代码:
function arrayObject(data) {
var arr = [];
var myObj = {};
for(var i = 0; i < data.length; i++){
for(var j = 0; j < data[i].length; j++){
for(var k = 0; k < data[i][j].length; k++){
myObj[data[i][j][0]] = data[i][j][k];
arr.push(myObj);
}
}
}
return arr;
}
var input = [[['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']],
[['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']]];
var output = arrayObject(input);
console.log(output);
答案 0 :(得分:1)
你犯了错误:
function arrayObject(data) { var arr = []; for(var i = 0; i < data.length; i++){ var myObj = {}; for(var j = 0; j < data[i].length; j++){ myObj[data[i][j][0]] = data[i][j][1]; } arr.push(myObj); } return arr; } var input = [ [ ['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk'] ], [ ['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager'] ] ]; var output = arrayObject(input); console.log(output);
答案 1 :(得分:0)
你可以考虑这个:
var items = [[['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']], [['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']]];
var result = [];
// first loop through items
items.forEach(function(item)
{
var obj = {};
// then loop through properties
item.forEach(function (value)
{
// then set property and value
obj[value[0]] = value[1];
});
// once all is done push the object
result.push(obj);
});
console.log(result);
哪个结果将具有您想要的格式。
希望有所帮助