2010-05-07 11 views
0

je le JavaScript suivant Array:Comment créer un tableau dans un autre tableau?

var jsonArray = { 'homes' : 
[ 
    { 
     "home_id":"203", 
     "price":"925", 
     "sqft":"1100", 
     "num_of_beds":"2", 
     "num_of_baths":"2.0", 
    }, 
    { 
     "home_id":"59", 
     "price":"1425", 
     "sqft":"1900", 
     "num_of_beds":"4", 
     "num_of_baths":"2.5", 
    }, 
    // ... (more homes) ...  
]} 

Je veux convertir ce type de Array (pseudo code) suivant:

var newArray = new Array(); 
newArray.push(home_id's); 

Comment puis-je faire cela?

Notez comment le newArray a seulement home_ids du grand tableau jsonArray.

+0

jsonArray est pas un tableau, son objet - jsonArray.homes est un bien. –

Répondre

5

Il suffit de faire un nouveau tableau et copier les anciennes valeurs dans

var ids = []; 
for (var i = 0; i < jsonArray.homes.length; i++) { 
    ids[i] = jsonArray.homes[i].home_id; 
} 
+1

+1 Je regardais cela en me demandant comment j'avais l'habitude de le faire en C# avant linq :) – DannyLane

-2

est ici d'une façon itérative.

function getPropertyValues (array, id) { 
    var result = []; 
    for (var hash in array) { 
    result.push(array[hash][id]); 
    } 
    return result; 
} 

var home_ids = getPropertyValues(jsonArray.homes, "home_id"); 

Ou si vous voulez le faire très rapide et sale (et vous êtes cibler uniquement les moteurs Javascript capables modernes):

var home_ids = jsonArray.homes.map(function(record) { return record.home_id });

+0

Vous ne devriez pas utiliser 'for..in' pour itérer sur un tableau, mais si vous allez, vous devez au moins vérifier 'hasOwnProperty' –

0

Encore une fois, jsonArray est pas un tableau, mais un objet, mais jsonArray.homes est

var arr = []; 
for (var i=0, len = jsonArray.homes.length; i < len; i++){ 
    arr.push(jsonArray.homes[i].home_id); 
} 
Questions connexes