2014-07-14 12 views
6

Ich möchte String-Eigenschaften auf meinem Array festlegen.Was sind die Nachteile beim Festlegen von String-Eigenschaften für Arrays?

z.

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

var myArr = []; 
readInput(myArr); 

Die Idee ist, einige Metadaten auf dem Array selbst zu speichern.

Ist das ein guter Ansatz? Bilde ich damit irgendwelche Probleme?

+1

Code, der mit einer 'for ... in'-Schleife über das Array iteriert, funktioniert wahrscheinlich nicht wie erwartet. Aber andererseits sollten Sie nicht mit 'for ... in' über ein Array iterieren. Am Ende sind Arrays nur Objekte, also kannst du machen was du willst;) –

+2

Du musst nur dein bestes Urteilsvermögen verwenden. Sieht es klar aus? Macht es Sinn, dass die Eigenschaft zu dem Array gehört? Wenn es so ist, fühlen Sie sich frei. – Ryan

+0

Gibt es einen Grund, warum Sie das Array nicht in einem Objekt speichern wollen, wobei die anderen Eigenschaften des Objekts die "Metadaten" zum Array sind? – drewblaisdell

Antwort

3

Ich stimme mit meagars Kommentar oben überein.

Es ist nicht sinnvoll, der vorhandenen Datenstruktur unerwartete Eigenschaften hinzuzufügen. Zum Beispiel wird nicht beibehalten ungültige Eigenschaften des ursprünglichen Arrays und die „Metadaten“ ignoriert das Array Klonen: geschehen (wie in, es ist wahrscheinlich nicht das, was Sie mögen

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

arr.metaSomething = "uhoh!"; 

newArr = arr.slice(0); 

newArr.metaSomething; // undefined 

Da es sich um ein unerwartetes Verhalten), wäre es wahrscheinlich besser, die Informationen in einem Objekt zu speichern, da Sie das Array ohnehin so behandeln.

Verwandte Themen