通过3维数组迭代 - JS
我正在创建一个函数,它将3维数组合并到一个对象数组中。通过3维数组迭代 - JS
例子:
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']]];
-
如果我推物体插入空数组我会得到以下:
姓名:“Mary”, 姓氏:“Jenkins”, 角色:“管理员” },[圆形对象对象],[圆形对象对象],[圆形对象对象],[圆形对象对象],[ ect],[圆形对象对象],[圆形对象对象],[圆形对象对象],[圆形对象对象],[圆形对象对象],[圆形对象对象],[圆形对象对象] [圆形对象的对象],[圆形对象的对象],[圆形对象的对象],[圆形对象的对象]]
不确定圆形对象的意思。
这里是我的代码至今:
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 myObj = {}时,这意味着每个循环后都会创建一个新变量,这意味着旧值将被转储并且不会卡在数组中,如果我们保留myObj全局变量,那意味着所有变量都将被推送到那里并在返回中,我们将有超过2个对象(在这个例子中),因为在每一个数组中,我们再次推动,希望它有意义 – Sletheren
有没有一种方法可以提供一点点视觉效果?像JSFiddle中的代码解释它如何工作?我很欣赏时间。 –
你可以这样考虑:
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);
其结果会对你想所需的格式。
希望帮助
检查为什么具有MyObj中,在最高层只能选择第一套数组项下面 – Sletheren