我正在创建一个函数,该函数将将3维数组合并到一个对象数组中。
示例:
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']]];
如果我将对象推入空数阵列,我将获得以下内容:
[[[对象对象] { 年龄:36, FirstName:"玛丽", 最后一个名称:"詹金斯", 角色:"经理"},[圆形对象],[圆形对象],[圆对象对象],[圆对象对象],[圆形对象],[圆形对象],[圆形对象对象],[圆形对象],[圆形对象],[循环对象],[圆形对象],[圆对象对象],[圆对象对象],[圆形对象],[圆形对象对象],[圆形对象],[圆形对象对象]]
不确定什么循环对象含义。
到目前为止,这是我的代码:
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);
你犯了错误:
- 首先,您不需要3个循环,正好两个会这样做,
- 第二,Myobj应该是上环的本地,因为它的价值将会在输入内部的每个数组中更改。
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);
您可以考虑以下内容:
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);
哪个结果将具有您想要的所需格式。
希望有帮助