Come aggiungere un object a un array

Come posso aggiungere un object a un array (in javascript o jquery)? Ad esempio, qual è il problema con questo codice?

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

Vorrei utilizzare questo codice per salvare molti oggetti nell’array di function1 e chiamare function2 per utilizzare l’object nell’array.

  1. Come posso salvare un object in un array?
  2. Come posso inserire un object in una matrice e salvarlo in una variabile?

Metti qualsiasi cosa in un array usando Array.push ().

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

Ulteriori informazioni sugli array

Aggiungi più di un articolo alla volta

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

Aggiungi elementi all’inizio di un array

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

Aggiungi il contenuto di una matrice a un’altra

 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) 

Crea una nuova matrice dal contenuto di due array

 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'] 

Prima di tutto, non ci sono object o array . Ci sono Object e Array . In secondo luogo, puoi farlo:

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

Ora a sarà un array con b come unico elemento.

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

qui gli anni dell'array stanno avendo valori come

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

continua così.

  • JavaScript è sensibile al maiuscolo / minuscolo . Chiamando new array() e new object() si genera un ReferenceError poiché non esistono.
  • È meglio evitare la new Array() causa del suo comportamento sobject a errori .
    Invece, assegna il nuovo array con = [val1, val2, val_n] . Per gli oggetti, usare = {} .
  • Ci sono molti modi quando si tratta di estendere un array (come mostrato nella risposta di John), ma il modo più sicuro sarebbe solo utilizzare concat anziché push . concat restituisce un nuovo array, lasciando intatto l’array originale. push muta l’array di chiamata che dovrebbe essere evitato , specialmente se l’array è definito globalmente.
  • È anche consigliabile congelare l’object e il nuovo array per evitare mutazioni indesiderate. Un object congelato non è né mutevole né estendibile (superficialmente).

Applicando questi punti e rispondendo alle tue due domande, potresti definire una funzione come questa:

 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. 

Espansione della risposta di Gabi Purcaru per includere una risposta al numero 2.

 a = new Array(); b = new Object(); a[0] = b; var c = a[0]; // c is now the object we inserted into a... 

obejct è chiaramente un refuso. Ma sia l’ object che l’ array bisogno di lettere maiuscole.

Puoi usare le mani corte per la new Array e il new Object queste sono [] e {}

Puoi spingere i dati nell’array usando .push . Questo lo aggiunge alla fine dell’array. oppure puoi impostare un indice per contenere i dati.

 function saveToArray() { var o = {}; o.foo = 42; var arr = []; arr.push(o); return arr; } function other() { var arr = saveToArray(); alert(arr[0]); } other(); 

Usando la notazione ES6 , puoi fare qualcosa del genere:

 var arr1 = [1,2,3] var obj = 4 

Per accodare puoi usare l’ operatore di spread in questo modo:

 var newData = [...arr1, obj] // [1,2,3,4] 
 /* array literal */ var aData = []; /* object constructur */ function Data(firstname, lastname) { this.firstname = firstname; this.lastname = lastname; this.fullname = function() { return (this.firstname + " " + this.lastname); }; } /* store object into array */ aData.push(new Data("Jhon", "Doe")); aData.push(new Data("Anna", "Smith")); aData.push(new Data("Black", "Pearl")); /* convert array of object into string json */ var jsonString = JSON.stringify(aData); document.write(jsonString); /* loop arrray */ for (var x in aData) { alert(aData[x].fullname()); } 
 a=[]; a.push(['b','c','d','e','f']); 

Il modo in cui ho creato il creatore di oggetti con la lista automatica:

 var list = []; function saveToArray(x) { list.push(x); }; function newObject () { saveToArray(this); }; 

In alternativa, la risposta è questa.

se hai e array come questo: var contacts = [bob, mary];

e vuoi mettere un altro array in questo array, puoi farlo in questo modo:

Dichiara il costruttore della funzione

 function add (firstName,lastName,email,phoneNumber) { this.firstName = firstName; this.lastName = lastName; this.email = email; this.phoneNumber = phoneNumber; } 

rendere l’object dalla funzione:

 var add1 = new add("Alba","Fas","Des@gmail.com","[098] 654365364"); 

e aggiungi l’object alla matrice:

 contacts[contacts.length] = add1; 

Si sta verificando un problema con l’ambito se si utilizza il codice in quanto tale. Devi dichiararlo fuori dalle funzioni se prevedi di usarlo tra di loro (o se chiami, passalo come parametro).

 var a = new Array(); var b = new Object(); function first() { a.push(b); // Alternatively, a[a.length] = b // both methods work fine } function second() { var c = a[0]; } // code first(); // more code second(); // even more code 

Puoi usare questo prototipo di javascript in questo modo:

 Array.prototype.push.apply(array1, array2,array3); 

=> array1 contiene il resto di loro