使用随机键处理Javascript对象
从firebase下载数据后,返回的对象是一个包含多个子对象的对象使用随机键处理Javascript对象,javascript,angular,typescript,Javascript,Angular,Typescript,从firebase下载数据后,返回的对象是一个包含多个子对象的对象 myObj = { "J251525" : { "email" : "TOM@MAIL.COM", "description" : "CLEAN THE HOUSE", "refNumber" : "J251525" },
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"
}
};
我想对这些数据进行分解,这样我就可以使用它在我的thead/tbody中以html格式显示,类似于下面的布局
所以我需要
请注意,我使用的是带有angular 2的typescript。您可以使用
for..of
循环,Object.entries()
来创建对象的值并将其推送到数组中的数组中
myObj={
“J251525”:{
“电子邮件”:TOM@MAIL.COM",
“描述”:“打扫房子”,
“参考编号”:“J251525”
},
“J512912”:{
“电子邮件”:JAMES@MAIL.COM",
“描述”:“刷马”,
“参考编号”:“J512912”
},
“J53f512”:{
“电子邮件”:HARRY@MAIL.COM",
“说明”:“洗车”,
“参考编号”:“J53f512”
}
};
设arr=[];
对象项(myObj)的(let[,obj]){
arr.push([]);
对象项(obj)的(let[,value]){
arr[arr.length-1]。推送(值);
}
};
console.log(arr)
您可以使用for..
循环中的对象.entries()
来创建对象的值并将其推送到数组中的数组中
myObj={
“J251525”:{
“电子邮件”:TOM@MAIL.COM",
“描述”:“打扫房子”,
“参考编号”:“J251525”
},
“J512912”:{
“电子邮件”:JAMES@MAIL.COM",
“描述”:“刷马”,
“参考编号”:“J512912”
},
“J53f512”:{
“电子邮件”:HARRY@MAIL.COM",
“说明”:“洗车”,
“参考编号”:“J53f512”
}
};
设arr=[];
对象项(myObj)的(let[,obj]){
arr.push([]);
对象项(obj)的(let[,value]){
arr[arr.length-1]。推送(值);
}
};
console.log(arr)
要将对象转换为所需格式,可以使用以下方法:
var myObj=
{
“J251525”:{
“电子邮件”:TOM@MAIL.COM",
“描述”:“打扫房子”,
“参考编号”:“J251525”
},
“J512912”:{
“电子邮件”:JAMES@MAIL.COM",
“描述”:“刷马”,
“参考编号”:“J512912”
},
“J53f512”:{
“电子邮件”:HARRY@MAIL.COM",
“说明”:“洗车”,
“参考编号”:“J53f512”
}
};
var result=Object.keys(myObj).map(函数(键){
返回[myObj[key]。电子邮件,myObj[key]。说明,key];
});
控制台日志(结果)代码>要将对象转换为所需格式,可以使用以下命令:
var myObj=
{
“J251525”:{
“电子邮件”:TOM@MAIL.COM",
“描述”:“打扫房子”,
“参考编号”:“J251525”
},
“J512912”:{
“电子邮件”:JAMES@MAIL.COM",
“描述”:“刷马”,
“参考编号”:“J512912”
},
“J53f512”:{
“电子邮件”:HARRY@MAIL.COM",
“说明”:“洗车”,
“参考编号”:“J53f512”
}
};
var result=Object.keys(myObj).map(函数(键){
返回[myObj[key]。电子邮件,myObj[key]。说明,key];
});
控制台日志(结果)代码>请尝试以下操作:
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等),当然,除非你需要你知道的键,但我不这么认为。试试这个:
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等),当然除非你需要你知道的键,但我不这么认为。你写下了一个键“描述”而不是“描述”,如果不是故意的,您可能需要编辑它。请Firebase将其作为数组(“列表”)提供给您。您记录了一个键“描述”而不是“描述”,如果不是故意的,您可能需要编辑它。请Firebase将其作为数组(“列表”)提供给您。“当我在for循环中的键上方悬停时,找不到名称“键”。其他答案对我很有用。干杯。这应该不是问题,你能进一步解释吗?啊。。看起来我需要一个先让后键。“当我将鼠标悬停在for循环中的键上时,找不到名称“key”。其他答案对我很有用。这应该不是问题,你能进一步解释吗?啊..看起来我需要先让后键。“属性”条目在类型对象构造函数上不存在“当我将鼠标悬停在红线所在的条目上时。@user172902请参阅Object.entries()
“属性”条目“在类型对象构造函数上不存在”。当我将鼠标悬停在红线所在的条目上时。@user172902请参阅Object.entries()
。