x长度数组中的JavaScript对象键

时间:2016-03-21 12:32:30

标签: javascript arrays object

我不确定该怎么称呼这个问题,但这是我想做的事情:

我目前正在为chartjs创建一系列生成器,以帮助我创建数据集。

现在我想这样做的方法是简单地使用object keys从我的数组中的每个元素中提取数据。

数组的每个元素都可能如下所示:

enter image description here

如您所见,此对象包含其中的其他对象。

这会产生问题,因为我想要对象feedback_skill的名称,我必须执行以下操作:

            data.forEach(function (x) {
             x['feedback_skill']['name']
        });

不能容纳一个变量。

现在我可以做的是传递以下数组:serieKey = ['feedback','name']建议数组中的第一个元素是第一个键,下一个元素是我想要命中的变量。

然而,这些数据集可以有无限数量的层,所以我的问题是:

有这样做的聪明方法吗?

2 个答案:

答案 0 :(得分:1)

我不知道本地JavaScript方法这样做,但是各种JavaScript框架允许您从这样的对象访问深层属性。例如,Dojo有lang.getObject,我可以看到有JQuery plugin做类似的事情,lodash as well。如果你没有使用这些框架,那么你总是可以创建自己的util函数来执行类似的工作。

这些类型的效用函数允许您将目标作为“点符号”属性传递,因此您可以调用:

lang.getObject("feedback_skill.name", false, x)

以Dojo为例,但它们非常多。

答案 1 :(得分:0)

我认为您的方法没有任何问题,可以通过以下方式处理无限数量的图层:

data.forEach(function(x){
    for(i in seriesKey)
        x = x[seriesKey[i]]; // x will contain whatever you wanted to retrieve when the loop ends
    doSomething(x);
}

seriesKey可以是一个类似于示例中的数组,只需要遍历所需深度的元素。