我需要将对象类型转换为不同对象的数组,以便在我的角度项目中显示多个表格。
以下是我的目标:
let myObject = {
internalValue:{city:"Paris", country:"France", pinCode:12345},
originalValue:{city:"Nantes", country:"France", pinCode:34567},
score:{city:10, country:100, pinCode:45}
};
预期数组
[
[
{detail:"Paris", label:"internalValue"},
{detail:"Nantes", label:"originalValue"},
{detail:10, label:"score"}
],
[
{detail:"France", label:"internalValue"},
{detail:"France", label:"originalValue"},
{detail:100, label:"score"}
],
[
{detail:12345, label:"internalValue"},
{detail:34567, label:"originalValue"},
{detail:45, label:"score"}
]
]
我的代码
let tableData:any;
tableData = _.transform(myObject, result, value, key)=>{
let retValue:any;
_.forIn(value, (v,k)=> {
let tempArr:Array<any>;
let tempObj:any = {};
tempObj.detail= v;
tempObj.label=key;
tempArr.push(tempObj);
retValue.push(tempArr);
})
result = [...retValue];
return result;
},[]);
卡在此处进行下一组循环。
这里并不真正需要 Lodash。您可以通过使用
Object.keys
和 Object.values
迭代对象的属性来完成此操作。
在这里,您最初从对象中的第一个值获取所需的键(
city
、country
、pinCode
)并进行迭代。
下面是一个例子:
let myObject = {
internalValue:{city:"Paris", country:"France", pinCode:12345},
originalValue:{city:"Nantes", country:"France", pinCode:34567},
score:{city:10, country:100, pinCode:45}
};
let keys = Object.keys(myObject);
let values = Object.values(myObject);
let result = Object.keys(values[0]).map((_, i) => {
return keys.map(key => {
return {detail: myObject[key][Object.keys(values[0])[i]], label: key};
});
});
console.log(result);