如何將對象添加到數組(在javascript或jquery中)? 例如,這段代碼有什麼問題?如何將對象添加到數組
function(){
var a = new array();
var b = new object();
a[0]=b;
}
我想使用此代碼來保存函數1數組中的許多對象,並調用函數2來使用數組中的對象。
- 如何保存數組中的對象?
- 如何將一個對象放入一個數組並將其保存到一個變量中?
如何將對象添加到數組(在javascript或jquery中)? 例如,這段代碼有什麼問題?如何將對象添加到數組
function(){
var a = new array();
var b = new object();
a[0]=b;
}
我想使用此代碼來保存函數1數組中的許多對象,並調用函數2來使用數組中的對象。
首先,沒有object
或array
。有Object
和Array
。其次,你可以做到這一點:
a = new Array();
b = new Object();
a[0] = b;
現在a
將與b
數組作爲其唯一的元素。
+1爲最不復雜的答案。我已經在下面擴展它,以包括OP的問題2的答案。 – Sam 2011-06-06 15:34:11
使用Array.push()將任何東西放入數組中。
var a=[], b={};
a.push(b);
// a[0] === b;
陣列上的額外信息
一次添加多個項目
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)
創建從內容兩個陣列
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']
我也有一個問題:myArray = []; myArray.push({'text':'一些文本','id':13});現在myArray是空的。所以如果我們嘗試從myArray [0] ['text']獲取值,它將是空的,爲什麼? http://take.ms/jSvbn – fdrv 2016-03-16 14:55:28
有些東西看起來不對。確保沒有範圍問題。使用let/var來聲明myArray。因爲myArray.push將始終改變myArray。 – 2016-03-16 19:14:25
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();
教育職位舉例,好 – GoldBishop 2017-03-29 13:27:18
如果您使用自己的代碼,則會遇到範圍問題。如果您打算在它們之間使用它(或者如果調用,將它作爲參數傳遞),則必須在函數之外聲明它。
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
擴大加比Purcaru的回答包括回答數2
a = new Array();
b = new Object();
a[0] = b;
var c = a[0]; // c is now the object we inserted into a...
var years = [];
for (i= 2015;i<=2030;i=i+1)
{
years.push({operator : i})
}
這裏陣列年內有類似
years[0]={operator:2015}
years[1]={operator:2016}
繼續這樣的值。
我做對象創建者,支持自動列表的方式:
var list = [];
function saveToArray(x) {
list.push(x);
};
function newObject() {
saveToArray(this);
};
你可以使用這個JavaScript原型的是這樣的:
Array.prototype.push.apply(array1, array2,array3);
=>陣列1包含它們
其餘關於替代答案是這樣的。
,如果你有像這樣的數組: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","[email protected]","[098] 654365364");
並添加到陣列的對象:
contacts[contacts.length] = add1;
new array()
和new object()
將拋出一個ReferenceError
,因爲它們不存在。new Array()
。 = [val1, val2, val_n];
。對於物體,請使用= {}
。concat
而不是push
。 concat
返回一個新數組,保持原始數組不變。 push
改變了調用數組should be avoided,特別是如果數組是全局定義的。運用這些點並回答你兩個問題,你可以定義一個函數是這樣的:
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.
「用法」是什麼使這個我個人首選的答案。 – HPWD 2017-10-03 20:59:59
@boghyon,我很好奇凍結和突變。你是在談論由於concat方法可能直接發生的數組更改,還是因爲在執行'.concat()'的過程中可能會從腳本的其他地方對數組進行更改?如果第二個,不應該由於javascript是單線程而自動阻止,即使在異步代碼的情況下,因爲控制應該至少在理論上不會被返回,直到方法完成? – jdmayfield 2018-02-01 19:30:55
@jdmayfield:JS的評估策略是[*通過對象共享*調用](https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sharing)。當對象傳遞時,它們不會被複制。這些對象中的突變在被傳遞的時候,對調用者來說總是**立即可見的,而不管突變體是否被異步調用,完成或不調用。由於這些副作用常常導致bug,因此我們將返回新對象,與原始對象分離。使對象不可變(例如通過「凍結」)只是防止意外突變的額外步驟。 – boghyon 2018-02-01 22:36:10
/* array literal */
var aData = [];
/* object constructur */
function Data(firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
this.fullname = function() {
return (this.firstname + " " + this.lastname);
};
}
/* store object into array */
aData.push(new Data("Jhon", "Doe"));
aData.push(new Data("Anna", "Smith"));
aData.push(new Data("Black", "Pearl"));
/* convert array of object into string json */
var jsonString = JSON.stringify(aData);
document.write(jsonString);
/* loop arrray */
for (var x in aData) {
alert(aData[x].fullname());
}
請不要不會修正發佈的代碼中的錯誤,如編輯5所做的那樣。如果你糾正了問題中的一個簡單錯誤,通常沒有理由存在這個答案。 – Paul 2015-08-06 03:01:31