2012-03-10 11 views

risposta

11

per ottenere le chiavi di un oggetto, non v'è Object.keys in ES5, che restituisce un array:

Object.keys(list).join(" "); // "name1 name2" 

Se si desidera filtrare i tasti, è possibile utilizzare .filter:

Object.keys(list).filter(function(key) { 
    return key.indexOf("name") === 0; // filter keys that start with "name" 
}).join(" "); // "name1 name2" 
+1

Una nota, tuttavia, il metodo 'keys' è stato introdotto in 1.8.5+. Se hai bisogno di compatibilità retroattiva, potresti preferire usare un'alternativa come lo shim di '_.keys' da underscore.js (la risposta di @ mVChr ne offre un'altra) – rjz

3
var names = Object.keys(list); 
4

Per i vecchi browser che non supportano keys:

var list_keys = [] 
for (var n in list) { 
    list_keys.push(n) 
} 
var names = list_keys.join(' '); 
+0

Dovresti includere un test hasOwnProperty:' if (list.hasOwnProperty (n)) '. – RobG

2

Dal momento che lei ha detto una soluzione basata su jQuery andrebbe bene, ecco un modo per farlo con jQuery che non richiede uno spessore ES5:

var itemString = $.map(list, function(item, key) { 
    return(key); 
}).join(" "); 

lavoro demo qui: http://jsfiddle.net/jfriend00/a2AMH/

jQuery.map() esegue iterazioni sulle proprietà di un oggetto o degli elementi di un array e crea un nuovo array basato sulla funzione personalizzata che gli passiamo. Quindi, uniamo i risultati di quell'array in una stringa. È possibile leggere circa jQuery.map()here.

Problemi correlati