我如何添加一个对象到数组(在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来使用数组中的对象。
如何在数组中保存对象? 我如何把一个对象放在一个数组中,并将其保存到一个变量?
当前回答
/* array literal */ var aData = []; /* object constructur */ function Person(firstname, lastname) { this.firstname = firstname; this.lastname = lastname; this.fullname = function() { // return (this.firstname + " " + this.lastname); return (`${this.firstname} ${this.lastname}`); // es6 template string }; } /* store object into array */ aData[aData.length] = new Person("Java", "Script"); // aData[0] aData.push(new Person("John", "Doe")); aData.push(new Person("Anna", "Smith")); aData.push(new Person("Black", "Pearl")); aData[aData.length] = new Person("stack", "overflow"); // aData[4] /* loop array */ for (var i in aData) { alert(aData[i].fullname()); } /* convert array of object into string json */ var jsonString = JSON.stringify(aData); document.write(jsonString);
将对象推入数组
其他回答
a=[];
a.push(['b','c','d','e','f']);
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();
使用ES6符号,你可以这样做:
对于追加,你可以像这样使用展开操作符:
VAR ARR1 = [1,2,3] 是 obj = 4 var newData = [...ARR1, OBJ] // [1,2,3,4] console.log(newData);
你可以像这样使用扩展运算符(…):
让arr = [{num: 1、字符:“一个”},{char num: 2: " b "}); Arr =…Arr,{num: 3, char: "c"}]; / /……Arr—>扩展运算符 console.log (arr);
JavaScript is case-sensitive. Calling new array() and new object() will throw a ReferenceError since they don't exist. It's better to avoid new Array() due to its error-prone behavior. Instead, assign the new array with = [val1, val2, val_n]. For objects, use = {}. There are many ways when it comes to extending an array (as shown in John's answer) but the safest way would be just to use concat instead of push. concat returns a new array, leaving the original array untouched. push mutates the calling array which should be avoided, especially if the array is globally defined. It's also a good practice to freeze the object as well as the new array in order to avoid unintended mutations. A frozen object is neither mutable nor extensible (shallowly).
应用这些观点并回答你的两个问题,你可以定义一个这样的函数:
function appendObjTo(thatArray, newObj) {
const frozenObj = Object.freeze(newObj);
return Object.freeze(thatArray.concat(frozenObj));
}
用法:
// 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.