[英]Pushing deeply nested arrays into Object properties and keys
function transformEmployeeData(employeeData) {
var myObj = {};
var myKeys = [];
var myValues = [];
for(var i=0; i < employeeData.length; i++) {
for(var y=0; y<employeeData[i].length; y++) {
for(var q=0; q< employeeData[i][y].length; q+=2) {
myKeys.push(employeeData[i][y][q]);
}
}
}
for(var i=0; i < employeeData.length; i++) {
for(var y=0; y<employeeData[i].length; y++) {
for(var q=0; q< employeeData[i][y].length; q+=2) {
myValues.push(employeeData[i][y][q]);
}
}
}
return myValues;
}
transformEmployeeData([
[
['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']
],
[
['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']
]
]);
/*
Output should look something like..
[
{firstName: 'Joe', lastName: 'Blow', age: 42, role: 'clerk'},
{firstName: 'Mary', lastName: 'Jenkins', age: 36, role: 'manager'}
]
*/
我正在尝试将正确的数据推送到 myKeys 和 myValues 中。 这样我就可以将它们分配为 object 键和值。 但是,我不知道该怎么做,我正在使用 q+=2 并且失败了。
没有循环是可能的。 在这种情况下,我会使用以下内容:
function transformEmployeeData(employeeData) {
return Object.fromEntries(employeeData.flat());
}
例子:
function transformEmployeeData(employeeData) { return Object.fromEntries(employeeData.flat()); } let data = transformEmployeeData([ [ ['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk'] ], [ ['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager'] ] ]); console.log(data)
请注意,这只会取消一层。
function transformEmployeeData(employeeData) {
var myValues = [];
for(var i=0; i < employeeData.length; i++) {
myValues.push(Object.fromEntries(employeeData[i]))
}
return myValues;
}
您可能会尝试一些更简单的方法,并在您的起始 arrays 上循环,并使用它们的索引来保持插入直线。
const oldFormat = [ [ ['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk'] ], [ ['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager'] ] ]; let newFormat = []; for (let index = 0; index < oldFormat.length; index++) { newFormat[index] = {} for(attribute in oldFormat[index]) { newFormat[index][oldFormat[index][attribute][0]] = oldFormat[index][attribute][1]; } } console.log(newFormat);
您可以从您的键/值 arrays 创建一个 Map object,然后使用.Z1D78DC8ED51214E5018B5114FE2 格式为您。
var arr = [[['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']],[['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']]] var outputArr = arr.map(element =>{ return Object.fromEntries(new Map(element)); }) console.log(outputArr)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.