如何将对象添加到数组
我如何添加一个对象到一个数组 (在JavaScript或jQuery中)? 例如,这个代码有什么问题?
<!-- language: lang-js --> function(){ var a = new array(); var b = new object(); a[0]=b; } 我想用这个代码来保存函数1的数组中的很多对象,并调用函数2来使用数组中的对象。
- 我怎样才能保存一个数组中的对象?
- 我怎样才能把一个对象在数组中,并将其保存到一个variables?
使用Array.push()将任何东西放入数组中。
 var a=[], b={}; a.push(b); // a[0] === b; 
有关arrays的额外信息
一次添加多个项目
 var x = ['a']; x.push('b', 'c'); // x = ['a', 'b', 'c'] 
将项目添加到数组的开头
 var x = ['c', 'd']; x.unshift('a', 'b'); // x = ['a', 'b', 'c', 'd'] 
将一个数组的内容添加到另一个
 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) 
从两个数组的内容创build一个新的数组
 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'] 
 首先,没有object或array 。 有Object和Array 。 其次,你可以这样做: 
 a = new Array(); b = new Object(); a[0] = b; 
 现在a将会是一个以b为唯一元素的数组。 
 var years = []; for (i= 2015;i<=2030;i=i+1) { years.push({operator : i}) } 
这里arrays年代是有价值的
 years[0]={operator:2015} years[1]={operator:2016} 
它继续像这样。
-   JavaScript 区分大小写 。 调用new array()和new object()会抛出一个ReferenceError因为它们不存在。
-  由于其容易出错的行为,最好避免使用new Array()。
 而是用= [val1, val2, val_n];分配新数组= [val1, val2, val_n];。 对于对象,使用= {}。
- 冻结对象(数组也是一个对象)也是一个好习惯,以避免意外的突变或副作用。 冻结的对象既不可变也不可延伸(浅)。
-  扩展数组有很多方法(如John的答案所示),但最安全的方法就是使用concat而不是push。concat返回一个新的数组,保持原始数组不变。push变异应该避免的调用数组,尤其是如果数组是全局定义的。
应用这些要点并回答你的两个问题,你可以定义一个这样的函数:
 function appendObjTo(thatArray, objToAppend) { return Object.freeze(thatArray.concat(objToAppend)); } 
用法:
 // Given const myArray = ["A","B"]; const myObject = {hello: "world!"}; // "save it to a variable" const newArray = appendObjTo(myArray, myObject); // returns: ["A","B",{hello: "world!"}] // myArray and myObject did not change. 
扩大Gabi Purcaru的答案包括对第二个答案。
 a = new Array(); b = new Object(); a[0] = b; var c = a[0]; // c is now the object we inserted into a... 
  obejct显然是一个错字。 但是object和array需要大写字母。 
 您可以使用短手为new Array和new Object这些是[]和{} 
 您可以使用.push将数据推送到数组中。 这将它添加到数组的末尾。 或者你可以设置一个索引来包含数据。 
 function saveToArray() { var o = {}; o.foo = 42; var arr = []; arr.push(o); return arr; } function other() { var arr = saveToArray(); alert(arr[0]); } other(); 
 a=[]; a.push(['b','c','d','e','f']); 
我使用自动列表创build对象创build者的方式:
 var list = []; function saveToArray(x) { list.push(x); }; function newObject () { saveToArray(this); }; 
另一个答案是这个。
 如果你有和这样的数组: var contacts = [bob, mary]; 
而你想在这个数组中放入另一个数组,你可以这样做:
声明函数构造函数
 function add (firstName,lastName,email,phoneNumber) { this.firstName = firstName; this.lastName = lastName; this.email = email; this.phoneNumber = phoneNumber; } 
从function上做对象:
 var add1 = new add("Alba","Fas","Des@gmail.com","[098] 654365364"); 
并将该对象添加到数组中:
 contacts[contacts.length] = add1; 
如果您使用代码,则会遇到范围问题。 如果您打算在它们之间使用它(或者如果调用,将其作为parameter passing),则必须在函数之外声明它。
 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 
你可以像这样使用这个javascript的原型:
 Array.prototype.push.apply(array1, array2,array3); 
=> array1包含其余的部分