使用jQuery从JSON对象值创建一个Array

时间:2014-02-26 13:12:48

标签: javascript jquery arrays json

我有这个简单的JSON文件(test.json):

{"personnes":[
            {
                "name":"Super",
                "firstname":"Mario",
                "adresse":["45 rue du poirier","6700","Strasbourg"],
                "departement": "bas-rhin",
            },
            {
                "name":"Super",
                "firstname":"Luigi",
                "adresse":["10 rue du muguet","6700","Strasbourg"],
                "departement": "eure",
            }
]}

由于某些原因,我需要将每个“部分”值存储在一个数组中,如下所示: ["bas-rhin","eure"]

我了解到 $.makeArray() 可以完成这项工作,但却没有找到方法。这是我的jQuery:

$( document ).ready(function() {
    $.getJSON( "ajax/test.json", function( data ) {
        console.log('loaded');
        var departement;
        var departements = $.each(data.personnes, function (index, personne) {
            departement = personne.departement;
            var arr = $.makeArray(departement);
            console.log(arr)
        });
    });
});

使用该代码,我得到2个单独的数组:["eure"]["bas-rhin"]

以下是问题:我如何解决它并将这些值放在一个数组中?

6 个答案:

答案 0 :(得分:9)

使用map。它更简单:

var arr = data.personnes.map(function (el) {
  return el.departement;
});

console.log(arr); // ["bas-rhin", "eure"]

或者,使用jQuery的$.map

var arr = $.map(data.personnes, function (el) {
  return el.departement;
});

Fiddle

如果您需要填充地图:

if (!('map' in Array.prototype)) {
  Array.prototype.map = function (mapper, that /*opt*/) {
    var other = new Array(this.length);
    for (var i = 0, n = this.length; i < n; i++) {
      if (i in this) { other[i] = mapper.call(that, this[i], i, this); }
    }
    return other;
  };
}

答案 1 :(得分:5)

我认为你应该这样试试:

$.getJSON( "ajax/test.json", function( data ) {
    console.log('loaded');
    var departement = []; // create array here
    $.each(data.personnes, function (index, personne) {
        departement.push(personne.departement); //push values here
    });
    console.log(departement); // see the output here
});

答案 2 :(得分:1)

声明一个数组有很多。选择任何一个:

var arr = $.makeArray();
or
var arr = [];
or
var arr = new Array();

列出了从json对象创建数组的三种方法:

1

$.each(data.personnes, function (index, personne) {
    arr[index] = personne.departement;
});

2

var arr = personnes.personnes.map(function (element) {
    return element.departement;
});

3

for(var index = 0;  index < data.personnes.length; index++) {
    arr[arr.length] = data.personnes[index].departement;
}

现在你看一下图像:

enter image description here

答案 3 :(得分:0)

试试这个

$( document ).ready(function() {
    $.getJSON( "ajax/test.json", function( data ) {
        console.log('loaded');
        var departement_arr = [];
        var departements = $.each(data.personnes, function (index, personne) {
            departement_arr.push(personne.departement);
        });
        console.log(departement_arr);
    });
});

答案 4 :(得分:0)

JavaScript没有关联数组;你只能将值推送到数组中。如果您正在寻找以下最终结果:

   ['abc','dg','erte']

// 0 1 2&lt; -------索引(不是1 2 3)

使用.each

var arr= new Array();
$.each( personnes, function(i, obj) {
      arr.push( obj.personnes)
});

或者您可以使用.map

var arr = $.map( personnes, function( obj, i ) { return obj.personnes; } ); 

答案 5 :(得分:0)

以下是使用简单数组逻辑的方法:

$( document ).ready(function() {
    $.getJSON( "ajax/test.json", function( data ) {
        console.log('loaded');
        var departements = [];
        $.each(data.personnes, function (index, personne) {
            departements[departements.length] = personne.departement;
        });
        console.log(arr);
    });
});