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

时间:2017-07-30 10:09:24

标签: javascript angular typescript

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

这是函数得到的json的一个例子:

arr = [
       {key1: 'val1'},
       {key2: 'val2'},
       {key3: 'val3'}
      ];

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

这是我尝试过的(基于this pipe):

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

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

key:[object Object], value: undefined

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

key:key1, value:val1

我做错了什么?我如何获得密钥和值?

6 个答案:

答案 0 :(得分:15)

在您的示例中,您有一个对象数组,并且每个对象都只有一个属性。

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

您发布的以下代码

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

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

let arr = {
    key1: 'val1',
    key2: 'val2',
    key3: 'val3'
};

答案 1 :(得分:2)

您需要另一个for循环来访问密钥和值,

for (let key of this.arr) {
 for(var i in key){
      console.log('key: ' +  i + ',  value: ' + key[i]);
 }
}

检查 console

DEMO

答案 2 :(得分:1)

如果您更担心指定

之类的对象
var temp={'name':Dinesh,'age':18}

您可以使用以下语法。

console.log(Object.keys(temp)[0],Object.values(temp)[0]):

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

答案 3 :(得分:0)

yourObject.forEach(function(value, index){
   // do your job
   console.log(value, index);
});

答案 4 :(得分:0)

您可以尝试这些

object = [
{
  "id": 1,
  "test": "test1",
  "name": ["abc", "pqr"]

},
{
  "id": 2,
  "test": "test2",
  "name": ["abc2", "pqr2"]

},
{
  "id": 3,
  "test": "test3",
  "name": ["abc3", "pqr3"]

},
{
  "id": 4,
  "test": "test4",
  "name": ["abc4", "pqr4"]

}]

和您的js或打字稿代码如下:-

YourMethod() {
for (let item of this.object) {
  for (let i in item) {
    if (typeof (item[i]) === 'object') {
      item[i].forEach((e: any) => {
        console.log("runseprate", e)
      })
    }
  }
}}

答案 5 :(得分:0)

   json = {payload.InsuredMobileNumber.type: "string"
payload.accidentTime.type: "string"
payload.causeOfLoss.type: "string"
payload.claimRegistrationDate.type: "string"
payload.emailAddress.type: "string"}


 var keyData = Object.keys(json);
          var valueData = Object.values(json)
          console.log("keyData = ", keyData)
          console.log("valueData = ", valueData)