2014-07-14 8 views
6

Voglio impostare proprietà stringa sul mio array.Quali sono gli svantaggi di impostare le proprietà stringa sugli array?

E.g.

function readInput (arr) { 
    var data = db.query('something'); 
    arr.itemType = data.itemType; // -> This 
    arr.push.apply(arr, data.list); 
} 

var myArr = []; 
readInput(myArr); 

L'idea è di memorizzare alcuni metadati sull'array stesso.

E 'questo un buon approccio? Sto creando qualche problema facendo questo?

+1

Il codice che scorre sull'array con un ciclo 'for ... in' probabilmente non funzionerà come previsto. Ma poi di nuovo, non dovresti scorrere su un array con 'for ... in'. Alla fine, gli array sono solo oggetti, quindi puoi fare quello che vuoi;) –

+2

Dovrai solo usare il tuo miglior giudizio. Sembra chiaro? Ha senso che la proprietà appartenga alla matrice? Se lo fa, sentiti libero. – Ryan

+0

C'è un motivo per cui non si desidera memorizzare la matrice in un oggetto, con le altre proprietà dell'oggetto che sono i "metadati" relativi alla matrice? – drewblaisdell

risposta

3

Sono d'accordo con il commento di meagar sopra.

Non ha senso aggiungere proprietà impreviste alla struttura dati esistente. Ad esempio, la clonazione la matrice ignora tutte le proprietà non valide della matrice originale e il "meta dati" non si conserva:

var arr = [1, 2, 3, 4], 
    newArr = []; 

arr.metaSomething = "uhoh!"; 

newArr = arr.slice(0); 

newArr.metaSomething; // undefined 

Poiché questo è un comportamento imprevisto (come in, probabilmente non è ciò che si desidera che accada), sarebbe probabilmente meglio memorizzare le informazioni in un oggetto, dal momento che è quello che stai trattando l'array come comunque.

Problemi correlati