Как добавить объект в массив
Как я могу добавить объект в массив (в javascript или jquery)? Например, в чем проблема с этим кодом?
function(){
var a = new array();
var b = new object();
a[0]=b;
}
Я хотел бы использовать этот код для сохранения многих объектов в массиве function1 и вызова функции 2 для использования объекта в массиве.
- Как я могу сохранить объект в массиве?
- Как я могу поместить объект в массив и сохранить его в переменной?
Ответы
Ответ 1
Поместите что-нибудь в массив, используя 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']
Ответ 2
var years = [];
for (i= 2015;i<=2030;i=i+1)
{
years.push({operator : i})
}
здесь массивные годы имеют такие значения, как
years[0]={operator:2015}
years[1]={operator:2016}
он продолжается следующим образом.
Ответ 3
Прежде всего, нет object
или array
. Есть object
и array
. Во-вторых, вы можете сделать это:
a = new Array();
b = new Object();
a[0] = b;
Теперь a
будет массивом с b
как его единственным элементом.
Ответ 4
Используя нотацию ES6
, вы можете сделать что-то вроде этого:
Для добавления вы можете использовать оператор распространения, например:
var arr1 = [1,2,3]
var obj = 4
var newData = [...arr1, obj] // [1,2,3,4]
console.log(newData);
Ответ 5
- JavaScript чувствителен к регистру. Вызов
new array()
и new object()
вызовет ReferenceError
так как они не существуют. - Лучше избегать
new Array()
из-за его склонного к ошибкам поведения.
Вместо этого назначьте новый массив с = [val1, val2, val_n]
. Для объектов используйте = {}
. - Существует множество способов расширения массива (как показано в ответе Джона), но самый безопасный способ - использовать
concat
вместо push
. concat
возвращает новый массив, оставляя исходный массив без изменений. push
изменяет вызывающий массив, чего следует избегать, особенно если массив определен глобально. - Также рекомендуется замораживать объект и новый массив во избежание непреднамеренных мутаций. Замороженный объект не является ни изменяемым, ни расширяемым (поверхностно).
Применяя эти пункты и отвечая на два ваших вопроса, вы можете определить такую функцию:
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.
Ответ 6
Расширение ответа Габи Пуркару, чтобы ответить на номер 2.
a = new Array();
b = new Object();
a[0] = b;
var c = a[0]; // c is now the object we inserted into a...
Ответ 7
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();
Ответ 8
В альтернативном ответе это.
если у вас есть и массив вроде этого: 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;
Ответ 9
/* 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());
}
Ответ 10
a=[];
a.push(['b','c','d','e','f']);
Ответ 11
Как я создал создателя объекта с автоматическим списком:
var list = [];
function saveToArray(x) {
list.push(x);
};
function newObject () {
saveToArray(this);
};
Ответ 12
Вы используете проблему с областью, если используете свой код как таковой. Вы должны объявить его вне функций, если вы планируете использовать его между ними (или, если вы вызываете, передаете его как параметр).
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
Ответ 13
var list = [
{ id: 1,
name: "High-Tech",
badge: 3,
children: [{
id: 1,
name: "PC",
badge: 1
},
{
id: 2,
name: "SmartPhone",
badge: 2
}],
}
];
var object = {name: "category"}
var result = list.concat(object);
console.log(result)
Ответ 14
Вы можете использовать этот прототип javascript следующим образом:
Array.prototype.push.apply(array1, array2,array3);
= > array1 содержит остальные из них