どうやったら オブジェクトを配列に追加できます (JavaScriptやjqueryで)たとえば、このコードの問題は何ですか?
function(){
var a = new array();
var b = new object();
a[0]=b;
}
このコードを使用して、function1の配列に多数のオブジェクトを保存し、その配列内のオブジェクトを使用するためにfunction2を呼び出します。
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)
2つの配列の内容から新しい配列を作成する
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})
}
ここで配列年はのような値を持っています
years[0]={operator:2015}
years[1]={operator:2016}
それはこのように続きます。
new array()
とnew object()
を呼び出すと、存在しないのでReferenceError
がスローされます。new Array()
は避けた方がいいでしょう 。= [val1, val2, val_n]
を割り当ててください。オブジェクトの場合は= {}
を使用してください。concat
の代わりに Push
を使用することです。 concat
は新しい配列を返し、元の配列はそのまま残します。特に配列がグローバルに定義されている場合、Push
は、 を避けるべき呼び出し配列を変更します 。これらの点を適用して2つの質問に答えるために、次のような機能を定義できます。
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.
ES6
表記を使うと、このようなことができます:
追加するには、 spread演算子 を次のように使用します。
var arr1 = [1,2,3]
var obj = 4
var newData = [...arr1, obj] // [1,2,3,4]
console.log(newData);
Gabi Purcaruの答えを拡張して、2番目の答えを含めます。
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();
代替の答えはこれです。
もしあなたがこのような配列を持っていれば: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;
/* 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());
}
a=[];
a.Push(['b','c','d','e','f']);
自動リストでオブジェクト作成者を作成した方法は次のとおりです。
var list = [];
function saveToArray(x) {
list.Push(x);
};
function newObject () {
saveToArray(this);
};
コードをそのまま使用すると、スコープの問題に遭遇します。あなたがそれらの間でそれを使用するつもりならばあなたはそれを関数の外側で宣言しなければなりません(あるいは呼び出すならば、それをパラメータとして渡します)。
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