397 Stimmen

Hinzufügen eines Objekts zu einem Array

Wie kann ich hinzufügen ein Objekt in ein Array (in javascript oder jquery)? Zum Beispiel, was ist das Problem mit diesem Code?

function() {
  var a = new array();
  var b = new object();
  a[0] = b;
}

Ich möchte diesen Code verwenden, um viele Objekte im Array von function1 zu speichern und function2 aufzurufen, um das Objekt im Array zu verwenden.

  1. Wie kann ich ein Objekt in einem Array speichern?
  2. Wie kann ich ein Objekt in ein Array einfügen und es in einer Variablen speichern?

767voto

John Strickler Punkte 24512

Fügen Sie mit Array.push() etwas in ein Array ein.

var a=[], b={};
a.push(b);    
// a[0] === b;

Zusätzliche Informationen über Arrays

Mehr als einen Artikel auf einmal hinzufügen

var x = ['a'];
x.push('b', 'c');
// x = ['a', 'b', 'c']

Hinzufügen von Elementen an den Anfang eines Arrays

var x = ['c', 'd'];
x.unshift('a', 'b');
// x = ['a', 'b', 'c', 'd']

Hinzufügen des Inhalts eines Arrays zu einem anderen

var x = ['a', 'b', 'c'];
var y = ['d', 'e', 'f'];
x.push.apply(x, y);
// x = ['a', 'b', 'c', 'd', 'e', 'f']
// y = ['d', 'e', 'f']  (remains unchanged)

Erstellen eines neuen Arrays aus dem Inhalt zweier Arrays

var x = ['a', 'b', 'c'];
var y = ['d', 'e', 'f'];
var z = x.concat(y);
// x = ['a', 'b', 'c']  (remains unchanged)
// y = ['d', 'e', 'f']  (remains unchanged)
// z = ['a', 'b', 'c', 'd', 'e', 'f']

76voto

santhosh Punkte 1877
var years = [];
for (i= 2015;i<=2030;i=i+1){
    years.push({operator : i})
}

hier hat das Array years Werte wie

years[0]={operator:2015}
years[1]={operator:2016}

geht es so weiter.

64voto

Gabi Purcaru Punkte 29912

Zunächst einmal gibt es keine object o array . Es gibt Object y Array . Zweitens: Sie puede das tun:

a = new Array();
b = new Object();
a[0] = b;

Jetzt a wird ein Array sein mit b als sein einziges Element.

62voto

Aayushi Punkte 1641

使用方法 ES6 Notation zu verwenden, können Sie etwa so vorgehen:

Zum Anhängen können Sie die Spread-Operator wie diese:

var arr1 = [1,2,3]
var obj = 4
var newData = [...arr1, obj] // [1,2,3,4]
console.log(newData);

26voto

Boghyon Hoffmann Punkte 15341
  • JavaScript ist Groß- und Kleinschreibung . Aufruf von new array() y new object() wirft eine ReferenceError da es sie nicht gibt.
  • Es ist besser zu vermeiden new Array() aufgrund seiner fehleranfälliges Verhalten .
    Stattdessen weisen Sie das neue Array mit = [val1, val2, val_n] . Für Objekte verwenden Sie = {} .
  • Es gibt viele Möglichkeiten, um ein Array zu erweitern (wie in Johns Antwort ), aber der sicherste Weg wäre, einfach die concat anstelle von push . concat gibt ein neues Array zurück, wobei das ursprüngliche Array unangetastet bleibt. push mutiert das aufrufende Array, das sollte vermieden werden insbesondere wenn das Array global definiert ist.
  • Es ist auch eine gute Praxis, wenn einfrieren das Objekt sowie das neue Array, um unbeabsichtigte Mutationen zu vermeiden. Ein eingefrorenes Objekt ist weder veränderbar noch (oberflächlich) erweiterbar.

In Anwendung dieser Punkte und zur Beantwortung Ihrer beiden Fragen könnten Sie eine Funktion wie folgt definieren:

function appendObjTo(thatArray, newObj) {
  const frozenObj = Object.freeze(newObj);
  return Object.freeze(thatArray.concat(frozenObj));
}

Uso:

// Given
const myArray = ["A", "B"];
// "save it to a variable"
const newArray = appendObjTo(myArray, {hello: "world!"});
// returns: ["A", "B", {hello: "world!"}]. myArray did not change.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X