javascript - 使用随机密钥的Foreach JSON

时间:2017-07-14 19:51:05

标签: javascript json

当我想要反序列化json时,我目前遇到了这个问题。我不知道如何使用未知密钥进行此操作

[
    {
        "84.200.222.4": [
            0.022
        ]
    },
    {
        "84.200.230.82": [
            1.315
        ]
    },
    {
        "80.156.160.161": [
            0.874
        ]
    },
    {
        "72.14.217.108": [
            0.662
        ]
    },
    {
        "108.170.251.193": [
            0.638
        ]
    },
    {
        "216.239.54.61": [
            0.64
        ]
    },
    {
        "172.217.23.131": [
            0.564
        ]
    }
]

当我想要

时,我将如何解决这个问题
1. 84.200.222.4
- 0.022

2. 84.200.230.82
- 1,315

3. 80.156.160.161
- 0.874

4 72.14.217.108
- 0.662

等等。我目前还不确定如何循环使用未知密钥?

4 个答案:

答案 0 :(得分:5)

只需遍历数组,然后使用Object.keys(),它返回所有对象属性的数组。

arr.forEach(obj => {
    console.log(Object.keys(obj)[0]);
})

答案 1 :(得分:2)

我没有对此进行测试,但它应该有效。

首先它是一个数组,所以你想循环它。然后,虽然对象键有所不同,但您可以使用object.keys来获取对象的键,或者只是迭代对象。所以你的代码看起来像这样

function printValues(arr)
{
    var arrayLength = arr.length;
    for (var i = 0; i < arrayLength; i++) 
    {
        let obj = arr[i];
        for (var key in obj) {
            x = obj[key];
            alert(x);
        }
    }
}

这可以优化到单行,但我尽可能简单地让你理解。

答案 2 :(得分:2)

以下是处理它的快捷方法:

var array = [{
  "84.200.222.4": [0.022]
}, {
  "84.200.230.82": [1.315]
}, {
  "80.156.160.161": [0.874]
}, {
  "72.14.217.108": [0.662]
}, {
  "108.170.251.193": [0.638]
}, {
  "216.239.54.61": [0.64]
}, {
  "172.217.23.131": [0.564]
}];

array.forEach((object, index) => {
  var ip = Object.keys(object).pop();
  console.log(`${index + 1}. ${ip}\n- ${object[ip]}`);
});

答案 3 :(得分:1)

使用:

var parsed = JSON.parse(data);

这将返回一个javascript对象/数组。

然后做

var result = parsed[0].keys.map(key => { /** do whatever **/});