关于javascript:javascript – 使用随机密钥的Foreach JSON

javascript - Foreach JSON with random keys

本问题已经有最佳答案,请猛点这里访问。

当我想反序列化JSON时,我现在遇到了这个问题。我不知道怎么用未知的钥匙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[
    {
       "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
2
3
4
5
6
7
8
9
10
11
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

等。。我目前不确定如何循环使用未知的密钥,这是可能的吗?


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

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


以下是一种快速处理方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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}
- ${object[ip]}`);
});


我没有测试这个,但它应该可以工作。

首先,它是一个数组,所以您需要循环遍历它。然后,尽管对象键有所不同,但您可以使用object.keys获取对象的键,或者只在对象上迭代。所以你的代码应该是这样的

1
2
3
4
5
6
7
8
9
10
11
12
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);
        }
    }
}

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


用途:

1
var parsed = JSON.parse(data);

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

然后做

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