2012-12-20 12 views
31

Powiel możliwe:
Accessing properties of an array of objectsJak przekonwertować tablicę obiektów javascript na tablicę znaków żądanego atrybutu obiektu?

Dane:

[{ 
    'id':1, 
    'name':'john' 
},{ 
    'id':2, 
    'name':'jane' 
}........,{ 
    'id':2000, 
    'name':'zack' 
}] 

Jaki jest najlepszy sposób, aby uzyskać:

['john', 'jane', ...... 'zack'] 

muszę pętli i wciśnij item.name do innej tablicy lub czy istnieje prosta funkcja, aby to zrobić?

+0

Czy na pewno chcesz, aby przekształcić go do tablicy takiego? Często dokonywanie konwersji w ten sposób świadczy o tym, że niewłaściwie działasz na swój podstawowy problem. Warto cofnąć się o krok i upewnić się, że tak nie jest. – Shauna

+0

@shauna moim problemem jest to. im przy użyciu bootstrapu typeahead ma dostęp tylko do drugiego formatu: który jest tablicą ciągów. moje wywołania ajax zwrócą pierwszy format, ponieważ potrzebuję identyfikatora. Mogę z niego skorzystać i rozszerzyć typ boosthead, ale raczej wykonaj to: wyślij drugi format do bootstrapu. po prostu zachowaj pierwszy format i kiedy użytkownik wybierze wybór, sprawdź ten pierwszy obiekt i użyj identyfikatora w razie potrzeby. –

Odpowiedz

52

Jeśli tablica obiektów jest items, można zrobić:

var items = [{ 
 
    id: 1, 
 
    name: 'john' 
 
}, { 
 
    id: 2, 
 
    name: 'jane' 
 
}, { 
 
    id: 2000, 
 
    name: 'zack' 
 
}]; 
 

 
var names = items.map(function(item) { 
 
    return item['name']; 
 
}); 
 

 
console.log(names); 
 
console.log(items);

Dokumentacja: map()

+0

pytanie nie jest oznaczone jQuery – Bruno

+1

@ bru.scopelliti 'map()' jest natywnym JavaScriptem, a nie tylko jQuery. – Sirko

+1

@ bru.scopelliti - moja odpowiedź nie ma nic wspólnego z jQuery .. – techfoobar

2

Użyj natywna map() funkcja na tablicach javascript:

var yourArray = [ { 
    'id':1, 
    'name':'john' 
},{ 
    'id':2, 
    'name':'jane' 
}........,{ 
    'id':2000, 
    'name':'zack' 
}]; 

var newArray = yourArray.map(function(el){ 
           return el.name; 
           }); 
0

Można użyć tej funkcji:

function createStringArray(arr, prop) { 
    var result = []; 
    for (var i = 0; i < arr.length; i += 1) { 
     result.push(arr[i][prop]); 
    } 
    return result; 
} 

Wystarczy przekazać tablicę obiektów i mienia, czego potrzebujesz. Powyższy skrypt będzie działał nawet w starych implementacjach EcmaScript.

0

Można to zrobić, aby monitorować własne właściwości tylko obiektu:

var arr = []; 

for (var key in p) { 
    if (p.hasOwnProperty(key)) { 
     arr.push(p[key]); 
    } 
} 
Powiązane problemy