如何使用forEach函数查找父键?

时间:2017-01-01 18:15:52

标签: javascript object

我在内存中有一个如下所示的对象:

let data = {
    12353: {
        CurrentNumbers: {
            jiewfh7ahdk8: 14,
            eiefhsdoowen: 24,
            jaweufwvnw83: 54
        },
    14324: {
        CurrentNumbers: {
            jiewfr7ahdk8: 16,
            eiefhsdsfsdf: 44,
            asgrega4ffef: 14
        },
    }

我尝试使用forEach对象上的data进行迭代,并获取父密钥(1235314324),如下所示:< / p>

data.forEach(values => {
    let parentKey = ??  //I tried Object.keys(values) but it gives me CurrentNumbers
} 

有没有办法让钥匙达到一级?

2 个答案:

答案 0 :(得分:3)

您无法forEach覆盖对象,因为没有Object.prototype.forEach。相反,您可以使用for...in loop来迭代对象的属性。根据MDN文档的链接:

  

for...in语句以任意顺序迭代对象的可枚举属性。对于每个不同的属性,可以执行语句。

因此,使用它,我们可以迭代属性1235314324

let data = {
    12353: {
        CurrentNumbers: {
            jiewfh7ahdk8: 14,
            eiefhsdoowen: 24,
            jaweufwvnw83: 54
        }
    },
    14324: {
        CurrentNumbers: {
            jiewfr7ahdk8: 16,
            eiefhsdsfsdf: 44,
            asgrega4ffef: 14
        }
    }
}   
    
for(let x in data) {
    console.log(x);
}

你的对象文字有一些括号问题。上面的代码是固定的

上述代码使用for...in循环来遍历data的属性并将其存储到x中。打印后,会记录属性1235314324

@mplungjan所述,您甚至可以这样做:

console.log(Object.keys(data))

这样做是使用Object.keys(data)返回data可枚举属性数组1235314324。请注意,返回的数组将属性存储为字符串。

答案 1 :(得分:1)

虽然安德鲁已经回答了问题,但如果您只想检索可以放置的物体的钥匙,

let data = {
    12353: {
        CurrentNumbers: {
            jiewfh7ahdk8: 14,
            eiefhsdoowen: 24,
            jaweufwvnw83: 54
        }
    },
    14324: {
        CurrentNumbers: {
            jiewfr7ahdk8: 16,
            eiefhsdsfsdf: 44,
            asgrega4ffef: 14
        }
    }
 }; 
 console.log(Object.keys(data));
您也可以使用 underscore.js 并获取以下密钥,

let data = {
    12353: {
        CurrentNumbers: {
            jiewfh7ahdk8: 14,
            eiefhsdoowen: 24,
            jaweufwvnw83: 54
        }
    },
    14324: {
        CurrentNumbers: {
            jiewfr7ahdk8: 16,
            eiefhsdsfsdf: 44,
            asgrega4ffef: 14
        }
    }
 }; 
 console.log(_.keys(data));

<强> DEMO