如何将对象添加到数组

我如何添加一个对象到一个数组 (在JavaScript或jQuery中)? 例如,这个代码有什么问题?

<!-- language: lang-js --> function(){ var a = new array(); var b = new object(); a[0]=b; } 

我想用这个代码来保存函数1的数组中的很多对象,并调用函数2来使用数组中的对象。

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

首先,没有objectarray 。 有ObjectArray 。 其次,你可以这样做:

 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而不是pushconcat返回一个新的数组,保持原始数组不变。 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显然是一个错字。 但是objectarray需要大写字母。

您可以使用短手为new Arraynew 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包含其余的部分