我如何添加一个对象到数组(在javascript或jquery)? 例如,这段代码有什么问题?
function() {
var a = new array();
var b = new object();
a[0] = b;
}
我想使用这段代码来保存function1数组中的许多对象,并调用function2来使用数组中的对象。
如何在数组中保存对象? 我如何把一个对象放在一个数组中,并将其保存到一个变量?
我如何添加一个对象到数组(在javascript或jquery)? 例如,这段代码有什么问题?
function() {
var a = new array();
var b = new object();
a[0] = b;
}
我想使用这段代码来保存function1数组中的许多对象,并调用function2来使用数组中的对象。
如何在数组中保存对象? 我如何把一个对象放在一个数组中,并将其保存到一个变量?
当前回答
你可以像这样使用扩展运算符(…):
让arr = [{num: 1、字符:“一个”},{char num: 2: " b "}); Arr =…Arr,{num: 3, char: "c"}]; / /……Arr—>扩展运算符 console.log (arr);
其他回答
另一个答案是这样的。
如果你有一个这样的数组:var contacts = [bob, mary];
你想在这个数组中放入另一个数组,你可以这样做:
声明函数构造函数
function add (firstName,lastName,email,phoneNumber) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.phoneNumber = phoneNumber;
}
从函数中创建对象:
var add1 = new add("Alba","Fas","Des@gmail.com","[098] 654365364");
并将对象添加到数组中:
contacts[contacts.length] = add1;
var years = [];
for (i= 2015;i<=2030;i=i+1){
years.push({operator : i})
}
这里数组years的值是
years[0]={operator:2015}
years[1]={operator:2016}
就像这样。
你可以像这样使用扩展运算符(…):
让arr = [{num: 1、字符:“一个”},{char num: 2: " b "}); Arr =…Arr,{num: 3, char: "c"}]; / /……Arr—>扩展运算符 console.log (arr);
性能
今天2020.12.04,我在Chrome v86、Safari v13.1.2和Firefox v83上对所选解决方案的MacOs HighSierra 10.13.6上执行测试。
结果
适用于所有浏览器
基于长度的就地解决方案(B)对于小数组是最快的,在Firefox中也适用于大数组,对于Chrome和Safari也很快 基于push (A)的in-place解决方案对于Chrome和Safari上的大数组速度最快,对于Firefox和小数组速度最快 就地解决方案C对于大数组慢,对于小数组中快 非原位解D和E对于大数组是很慢的 非就地解决方案E、F和D(在Firefox上)对于小型数组来说速度较慢
细节
我执行2个测试用例:
对于10个元素的小数组-你可以在这里运行它 对于有1M个元素的大数组-你可以在这里运行它
下面的代码片段展示了解决方案之间的差异 一个, B, C, D, E, F
PS:答案B被删除了——但实际上它是第一个使用这种技术的答案,所以如果你有机会看到它,请点击“取消删除”。
// https://stackoverflow.com/a/6254088/860099 function A(a,o) { a.push(o); return a; } // https://stackoverflow.com/a/47506893/860099 function B(a,o) { a[a.length] = o; return a; } // https://stackoverflow.com/a/6254088/860099 function C(a,o) { return a.concat(o); } // https://stackoverflow.com/a/50933891/860099 function D(a,o) { return [...a,o]; } // https://stackoverflow.com/a/42428064/860099 function E(a,o) { const frozenObj = Object.freeze(o); return Object.freeze(a.concat(frozenObj)); } // https://stackoverflow.com/a/6254088/860099 function F(a,o) { a.unshift(o); return a; } // ------- // TEST // ------- [A,B,C,D,E,F].map(f=> { console.log(`${f.name} ${JSON.stringify(f([1,2],{}))}`) }) <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js" integrity="sha512-90vH1Z83AJY9DmlWa8WkjkV79yfS2n2Oxhsi2dZbIv0nC4E6m5AbH8Nh156kkM7JePmqD6tcZsfad1ueoaovww==" crossorigin="anonymous"> </script> This shippet only presents functions used in performance tests - it not perform tests itself!
这里是chrome的示例结果
object显然是一个打字错误。但是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();