从firebase下载数据后,返回的对象是一个包含多个子对象的对象。
myObj =
{
"J251525" : {
"email" : "TOM@MAIL.COM",
"description" : "CLEAN THE HOUSE",
"refNumber" : "J251525"
},
"J512912" : {
"email" : "JAMES@MAIL.COM",
"description " : "BRUSH HORSE",
"refNumber" : "J512912"
},
"J53f512" : {
"email" : "HARRY@MAIL.COM",
"description " : "WASH CAR",
"refNumber" : "J53f512"
}
};
我想分解这些数据,以便我可以使用它在html中显示我的thead / tbody,类似于以下布局
所以我需要
[' TOM@MAIL.COM','清洁房屋',' J251525']
[' JAMES@MAIL.COM' ;,' BRUSH HORSE',' J512912']
[' HARRY@MAIL.COM' ;,'洗车',' J53f512']
我不知道从哪里开始这个,因为通常当我处理对象时,我知道密钥而我不必循环任何东西。但是在这种情况下,我必须以某种方式找到这个主对象中有多少个对象。 另外,我不能做像myObj [' J251525']这样的事情因为我不知道关于密钥J251525
请注意,我使用的是带有角度2的打字稿。
答案 0 :(得分:2)
您可以使用for..of
循环,Object.entries()
来创建对象的值并将其推送到数组中的数组
myObj = {
"J251525": {
"email": "TOM@MAIL.COM",
"description": "CLEAN THE HOUSE",
"refNumber": "J251525"
},
"J512912": {
"email": "JAMES@MAIL.COM",
"description ": "BRUSH HORSE",
"refNumber": "J512912"
},
"J53f512": {
"email": "HARRY@MAIL.COM",
"description ": "WASH CAR",
"refNumber": "J53f512"
}
};
let arr = [];
for (let [, obj] of Object.entries(myObj)) {
arr.push([]);
for (let [, value] of Object.entries(obj)) {
arr[arr.length - 1].push(value);
}
};
console.log(arr)
您也可以将Array.prototype.map()
替换为for..of
循环以返回相同的结果
Object.entries(myObj).map(([,obj]) => Object.entries(obj).map(([,value]) => value))
答案 1 :(得分:2)
要将对象转换为所需格式,您可以使用:
var myObj =
{
"J251525" : {
"email" : "TOM@MAIL.COM",
"description" : "CLEAN THE HOUSE",
"refNumber" : "J251525"
},
"J512912" : {
"email" : "JAMES@MAIL.COM",
"description" : "BRUSH HORSE",
"refNumber" : "J512912"
},
"J53f512" : {
"email" : "HARRY@MAIL.COM",
"description" : "WASH CAR",
"refNumber" : "J53f512"
}
};
var result = Object.keys(myObj).map(function(key) {
return [myObj[key].email, myObj[key].description, key];
});
console.log(result);
答案 2 :(得分:1)
试试这个:
for(key in myObj) {
var holder = myObj[key];
// here you can use the object however you like
console.log(holder.email);
console.log(holder.description);
console.log(holder.refNumber);
}
你不应该创建一个新对象,这将是一个不需要的操作,因为在一个普通的js数组中你将拥有相同的结构,但是你将拥有有序的整数(1,2,3等)而不是随机键。 ),当然,除非你需要你知道的钥匙,但我不这么认为。