JavaScript - 获取非预定义键

时间:2016-12-15 10:01:56

标签: javascript angularjs arrays

我有一系列对象,我试图获取它的值,尽管里面的变量没有预定义。问题是我不知道该怎么做。

阵列:

Array[3]: [
    {
        id: "1",
        name: "name1",
        lastname: "lastname1"
    },
    {
        id: "2",
        name: "name2",
        lastname: "lastname2"
    },
    {
        id: "3",
        name: "name3",
        lastname: "lastname3"
    }
]

使用Javascript:

this.myFunction = function(response) {
    var iLength = response.data.length;

    for(var i=0;i<iLength;i++) {
        var jLength = Object.keys(response.data[i]).length;

        for(var j=0;j<jLength;j++) {
            // ???
        }
    }
}

所以不要以这种方式访问​​这些值,

response.data[i].id
response.data[i].name
response.data[i].lastname

我宁愿以这种方式访问​​它:

response.data[i]."somethingSomething[j]";

这可能吗?我对AngularJS很新,所以我可能不会以正确的方式处理这个问题。任何帮助将不胜感激。

编辑:我已经更好地提出了我的问题。

2 个答案:

答案 0 :(得分:3)

您可以遍历密钥。

for (var i = 0; i < iLength; i++) {
    var keys = Object.keys(response.data[i]);

    for (var j = 0; j < keys.length; j++) {
        console.log(response.data[i][keys[j]]);
    }
}

但如果您事先知道了这些键,则可以使用带键的数组并在迭代时保持稳定的顺序。

var keys = ['id', 'name', 'lastname'];
for (var i = 0; i < iLength; i++) {
    for (var j = 0; j < keys.length; j++) {
        console.log(response.data[i][keys[j]]);
    }
}

答案 1 :(得分:0)

您可以像这样使用for ... in ...

&#13;
&#13;
var obj = {
  id: "1",
  name: "name1",
  lastname: "lastname1"
};

for (key in obj) {
  if (obj.hasOwnProperty(key))
    document.body.innerHTML += key + "<br>";
}
&#13;
&#13;
&#13;