Angular 2使用动态密钥从json数组获取键和值

Bat*_*eva 6 javascript typescript angular

我想从动态键的json数组中获取键和值.意思是,我事先并不知道钥匙是什么.

这是函数获取的json的一个示例:

arr = [
       {key1: 'val1'},
       {key2: 'val2'},
       {key3: 'val3'}
      ];
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很简单,但我无法获得每个项目的关键和价值.

这是我试过的(基于这个管道):

for (let key of arr) {
   console.log ('key: ' +  key + ',  value: ' + arr[key]);
 }
Run Code Online (Sandbox Code Playgroud)

但是我在日志中得到的是以下内容:

key:[object Object], value: undefined
Run Code Online (Sandbox Code Playgroud)

我的预期行为是获得以下内容:

key:key1, value:val1
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我怎样才能获得密钥和值?

Hen*_*ann 17

在您的示例中,您有一个对象数组,每个对象只有一个属性.

for (let obj of arr) {
    console.log("object:", obj);
    for (let key in obj) {
        console.log("      key:", key, "value:", obj[key]);
    }
}
Run Code Online (Sandbox Code Playgroud)

您发布的以下代码

for (let key in arr) {
    console.log ('key: ' +  key + ',  value: ' + arr[key]);
}
Run Code Online (Sandbox Code Playgroud)

...将在这样的数据结构上工作:

let arr = {
    key1: 'val1',
    key2: 'val2',
    key3: 'val3'
};
Run Code Online (Sandbox Code Playgroud)


Sac*_*hra 5

如果您更关心指定对象,例如

var temp={'name':Dinesh,'age':18}
Run Code Online (Sandbox Code Playgroud)

您可以使用以下语法。

console.log(Object.keys(temp)[0],Object.values(temp)[0]):
Run Code Online (Sandbox Code Playgroud)

特别是零索引,因为对象的方法键和值都返回一个数组