使用随机键处理Javascript对象

使用随机键处理Javascript对象,javascript,angular,typescript,Javascript,Angular,Typescript,从firebase下载数据后,返回的对象是一个包含多个子对象的对象 myObj = { "J251525" : { "email" : "TOM@MAIL.COM", "description" : "CLEAN THE HOUSE", "refNumber" : "J251525" },

从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"
    }
};
我想对这些数据进行分解,这样我就可以使用它在我的thead/tbody中以html格式显示,类似于下面的布局

所以我需要

  • 通过查看myObj,以某种方式创建一个['email','description','refNumber']数组
  • 循环遍历对象(对象是否可能?)并创建几个数组,如
  • ['TOM@MAIL.COM“,”打扫房子“,”J251525“]

    ['JAMES@MAIL.COM“,”刷马“,”J512912']

    ['HARRY@MAIL.COM“,”洗车“,”J53f512']

    我不知道从哪里开始,因为通常当我处理对象时,我知道关键点,并且我不需要循环任何东西。然而,在这个例子中,我必须找出这个主对象中有多少个对象。 另外,我不能像myObj['J251525']那样做,因为我不知道关于键J251525的事情


    请注意,我使用的是带有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()