将数据从JSON文件转换为数组

时间:2015-11-09 02:48:07

标签: javascript arrays json

我有一个像这样的JSON文件:

[{
    "X_id": ["ID1"],
    "contents.value": ["Shanghai"],
    "contents.count": [23.7]
}, {
    "X_id": ["ID2"],
    "contents.value": ["Lagos"],
    "contents.count": [16.1]
}, {
    "X_id": ["ID3"],
    "contents.value": ["Instanbul"],
    "contents.count": [14.2]
}, {
    "X_id": ["ID4"],
    "contents.value": ["Karachi"],
    "contents.count": [14.0]
}, {
    "X_id": ["ID5"],
    "contents.value": ["Mumbai"],
    "contents.count": [12.5]
}]

我想将此文件中的数据转换为数组,如下所示:

var series = [
    ['Shanghai', 23.7],
    ['Lagos', 16.1],
    ['Instanbul', 14.2],
    ['Karachi', 14.0],
    ['Mumbai', 12.5]
];

所以这是我为此尝试的代码:

var series = [];
$.getJSON("example.json", function(data) {})
.done(function(data) {
    $.each(data, function(i, item) {
        series.push([item['contents.value'][0], item['contents.count'][0]])
    });
})
.fail(function() {})
.always(function(data) {});

我使用这个数组作为函数的数据源,第一个series变量对我有用,但是我想从那个JSON文件中获取看起来像这样的数据,但第二个{ {1}}变量对我没用。

我尝试series这两个变量,结果如下:

enter image description here

你可以看到,对于第一个变量,数组的内容显示在控制台上,但是对于第二个变量,它不是这样显示的:console.log()并且看到它&#39 ; s内容我必须点击它,然后控制台显示:

enter image description here

那么如何让第二个数组看起来像第一个呢?

1 个答案:

答案 0 :(得分:0)

'use strict'

let data = [{
    "X_id": ["ID1"],
    "contents.value": ["Shanghai"],
    "contents.count": [23.7]
}, {
    "X_id": ["ID2"],
    "contents.value": ["Lagos"],
    "contents.count": [16.1]
}, {
    "X_id": ["ID3"],
    "contents.value": ["Instanbul"],
    "contents.count": [14.2]
}, {
    "X_id": ["ID4"],
    "contents.value": ["Karachi"],
    "contents.count": [14.0]
}, {
    "X_id": ["ID5"],
    "contents.value": ["Mumbai"],
    "contents.count": [12.5]
}]

let result = data.map((item) => {
    return [
        item['contents.value'][0],
        item['contents.count'][0],
    ]
})

console.log(result)

输出

[ [ 'Shanghai', 23.7 ],
  [ 'Lagos', 16.1 ],
  [ 'Instanbul', 14.2 ],
  [ 'Karachi', 14 ],
  [ 'Mumbai', 12.5 ] ]