如何将对象添加到数组
我如何添加一个对象到一个数组 (在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包含其余的部分