Cum pot adăuga un obiect la o serie (în javascript sau jquery)? De exemplu, ceea ce este problema cu acest cod?
function(){
var a = new array();
var b = new object();
a[0]=b;
}
Aș dori să folosesc acest cod pentru a salva mai multe obiecte în matrice de function1 și de apel function2 de utilizare a obiectului în matrice.
Pune ceva într-o matrice folosind Matrice.push().
var a=[], b={};
a.push(b);
// a[0] === b;
Informații suplimentare pe Tablouri
Adăugați mai mult de un articol la un moment dat
var x = ['a'];
x.push('b', 'c');
// x = ['a', 'b', 'c']
Adăugarea de elemente la începutul unei matrice
var x = ['c', 'd'];
x.unshift('a', 'b');
// x = ['a', 'b', 'c', 'd']
Adăugați conținutul unui tablou la altul
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)
Crearea unei noi matrice de conținutul a două matrice
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']
Mai întâi de toate, nu există nici un "obiect" sau "matrice". Există "Obiect" și "Matrice". În al doilea rând, poate face asta:
a = new Array();
b = new Object();
a[0] = b;
Acum, " a "va fi o matrice cu" b " ca singurul element.
Folosind ES6
notație, puteți face ceva de genul asta:
Pentru adăugarea puteți utiliza răspândirea operator astfel:
var arr1 = [1,2,3]
var obj = 4
var newData = [...arr1, obj] // [1,2,3,4]
console.log(newData);
new array () " și " new obiect()
va arunca o ReferenceError
deoarece acestea nu't există.new Array()
datorită predispuse la erori de comportament.
În schimb, atribuie noua matrice cu = [val1, val2, val_n]
. Pentru obiecte, utilizați = {}
.concat
în loc de "push". concat
returnează o nouă gamă, lăsând matrice original neatins. "push" mutații chemarea matrice care ar trebui să fie evitate, mai ales în cazul în care matricea este în general definit.Aplicarea acestor puncte și de a răspunde la cele două întrebări, puteți defini o funcție de genul asta:
function appendObjTo(thatArray, newObj) {
const frozenObj = Object.freeze(newObj);
return Object.freeze(thatArray.concat(frozenObj));
}
Utilizare:
// 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.
obejct
este în mod clar o greșeală de scriere. Dar ambele "obiect" și "matrice" nevoie de majuscule.
Puteți utiliza scurt mâinile pentru noua Serie " și " Obiect nousunt
[]și
{}`
Puteți împinge date în matrice folosind .push
. Aceasta se adaugă la sfârșitul șirului. sau puteți seta un index să conțină date.
function saveToArray() {
var o = {};
o.foo = 42;
var arr = [];
arr.push(o);
return arr;
}
function other() {
var arr = saveToArray();
alert(arr[0]);
}
other();
Pe alternativ răspunsul este acesta.
dacă aveți și matrice de genul asta: var contacte = [bob, maria];
și doriți să puneți o altă matrice în această matrice, puteți face că, în acest fel:
Declararea functiei constructor
function add (firstName,lastName,email,phoneNumber) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.phoneNumber = phoneNumber;
}
face obiect de funcția:
var add1 = new add("Alba","Fas","[email protected]","[098] 654365364");
și se adaugă obiect în matrice:
contacts[contacts.length] = add1;
/* 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']);
Se execută într-un domeniu de problema daca folosesti codul ca atare. Trebuie să-l declare în afara funcțiilor, dacă aveți de gând să-l folosească între ei (sau daca de asteptare, trece ca un parametru).
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