Javascript 如何在同一for循环中声明新对象而不覆盖以前的迭代?
因此,我在这个练习中遇到的问题是,在我将第一个嵌套数组转换为对象之后,迭代将进入下一个嵌套数组,并覆盖我刚才转换的第一个嵌套数组 所以我的一个问题是,我如何告诉我的代码停止对我刚刚转换成的对象进行迭代,并使用我需要转换的下一个嵌套数组创建一个新对象 根据练习,除了我前面的问题之外,我还需要将新创建的对象放置在一个数组中。我计划先创建对象,然后在最后将它们放入占位符数组变量中。在循环中有没有更有效的方法 任何帮助都将不胜感激,在这里还是有点新鲜,所以不要太刻薄哈哈 以下是我到目前为止所做的+说明 *编写一个名为“transformEmployeeData”的函数,将一些员工数据从一种格式转换为另一种格式 论点如下所示:Javascript 如何在同一for循环中声明新对象而不覆盖以前的迭代?,javascript,arrays,loops,object,iterator,Javascript,Arrays,Loops,Object,Iterator,因此,我在这个练习中遇到的问题是,在我将第一个嵌套数组转换为对象之后,迭代将进入下一个嵌套数组,并覆盖我刚才转换的第一个嵌套数组 所以我的一个问题是,我如何告诉我的代码停止对我刚刚转换成的对象进行迭代,并使用我需要转换的下一个嵌套数组创建一个新对象 根据练习,除了我前面的问题之外,我还需要将新创建的对象放置在一个数组中。我计划先创建对象,然后在最后将它们放入占位符数组变量中。在循环中有没有更有效的方法 任何帮助都将不胜感激,在这里还是有点新鲜,所以不要太刻薄哈哈 以下是我到目前为止所做的+说明
[
[
['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']
],
[
['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']
]
]
Given that input, the return value should look like this:
[
{firstName: 'Joe', lastName: 'Blow', age: 42, role: 'clerk'},
{firstName: 'Mary', lastName: 'Jenkins', age: 36, role: 'manager'}
]
请注意,输入的行数或键数可能与给定的示例不同
例如,假设人力资源部在每个员工记录中添加一个“tshirtSize”字段。
您的代码应该灵活地适应这一点*
function transformEmployeeData(employeeData) {
debugger;
var obj = {};
for (var i = 0; i < employeeData.length; i++) {
for (var y = 0; y < employeeData[i].length; y++) {
obj[employeeData[i][y][0]] = employeeData[i][y][1]
}
}
return obj
}
函数转换employeeData(employeeData){
调试器;
var obj={};
对于(变量i=0;i
在外部阵列上使用.map()
,在内部阵列上使用.reduce()
var数据=[
[
['firstName','Joe',['lastName','Blow'],['age',42],'role','clerk']
],
[
['firstName','Mary',['lastName','Jenkins',['age',36','role','manager']
]
];
var res=data.map(a=>a.reduce((r[k,v])=>({[k]:v,…r}),{});
控制台日志(res)
在外部数组上使用.map()
,在内部数组上使用.reduce()
var数据=[
[
['firstName','Joe',['lastName','Blow'],['age',42],'role','clerk']
],
[
['firstName','Mary',['lastName','Jenkins',['age',36','role','manager']
]
];
var res=data.map(a=>a.reduce((r[k,v])=>({[k]:v,…r}),{});
控制台日志(res)代码>非常感谢。我使用了你的第一个建议作为模板,并使用2 for循环反向解决它。但是,除了这个问题(我希望你不介意)之外,如果你看一下我用来解决这个问题的代码,为什么我必须在第一个for循环下放置一个占位符变量,代码才能工作呢。我尝试将未定义的对象变量放在代码顶部附近,但它不起作用,如果您不介意的话,为什么会这样。函数transformEmployeeData(数组){var arr=[];var obj={};for(var I=0;I
这是因为对象是引用类型,所以如果您只在循环外部定义它,那么在循环内部,您总是将它指定给同一个对象。如果你把它放在循环中,你会在每次迭代中创建一个新的、唯一的对象,非常感谢。我使用了你的第一个建议作为模板,并使用2 for循环反向解决它。但是,除了这个问题(我希望你不介意)之外,如果你看一下我用来解决这个问题的代码,为什么我必须在第一个for循环下放置一个占位符变量,代码才能工作呢。我尝试将未定义的对象变量放在代码顶部附近,但它不起作用,如果您不介意的话,为什么会这样。函数transformEmployeeData(数组){var arr=[];var obj={};for(var I=0;I
这是因为对象是引用类型,所以如果您只在循环外部定义它,那么在循环内部,您总是将它指定给同一个对象。如果将其放入循环中,则在每次迭代中都会创建一个新的、唯一的对象