#javascript #arrays #json
#javascript #массивы #json
Вопрос:
Это глупо, но я чего-то не хватает и не смог прийти к выводу. Я пытаюсь инициализировать массив JSON и пытаюсь добавить к нему объекты JSON во время выполнения. Для примера я буду получать список повторяющихся значений с сервера примерно так, как показано ниже.
"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]
Я должен создать массив объектов и заполнить в нем эти значения.
Я пытаюсь инициализировать массив, подобный
var myArr = [];
и я хочу динамически добавлять к нему объект со свойствами, что-то вроде приведенного ниже.
var myobj = {}
for(int i=0;i<length;i )
{
myobj[i].name = serverrespOBJ.name;
myobj[i].lastName= 'serverrespOBJ.lastname';
myArr.push(myobj)
}
Я получаю сообщение об ошибке, что имя не может быть добавлено в undefined, поэтому я считаю, что мой способ добавления элементов к объекту неверен.
Я пытаюсь найти хороший пример, но не смог его получить. Будем признательны за любую помощь.
Спасибо
Комментарии:
1. Вы должны выбрать правильный ответ!
Ответ №1:
Вам понадобится что-то вроде этого:
var data = { employees: [] } // initially empty
data.employees.push( {
firstName: 'John',
lastName: 'Doe'
} );
Комментарии:
1. @Gendaful нет, пожалуйста, не делайте этого, это аннулирует уже предоставленные ответы.
2.@Gendaful в любом случае, ваша проблема в том, что вам нужно создавать
myobj
внутри цикла, иначе вы просто добавляете один и тот же объект в массив снова и снова. Вам также необходимо потерять[i]
разыменование —myobj
это объект, а не массив.3. Спасибо Alnitak, короче говоря, я создаю массив myArr, а затем создаю myObj внутри цикла for, такого как myObj = {}. После этого я добавляю такие элементы, как myobj.name = ‘abc, myobj.lastname = def и т.д., А затем добавляйте объект в массив, например myarr.push (myobj), но всякий раз, когда я пытаюсь получить его с помощью myarray[0].name, он всегда возвращает undefined, как вы думаете, чего мне здесь не хватает?
4.@Gendaful возможно, исходные данные, которые вы пытаетесь поместить в
myObj
, не определены?
Ответ №2:
Сначала просто инициализируйте объект или массив, который вы хотите динамично воспроизводить, например:
var myArr = [], myObj = {};
Теперь, если добавить к ним элемент:
myArr.push(10);
myObj.new = 10 or myObj['new'] = 10
Более продвинутый :
myArr.push(myObj); //[10, {'new':10}] --> looks our object
Ответ №3:
Вы можете инициализировать новый объект json следующим образом:
var jsonObj = {};
jsonObj.employees = [];
jsonObj.employees.push({"firstName":"Waqar", "lastName":"Alamgir"});
или добавляйте существующие данные следующим образом:
var jsonObj = {
"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]
};
jsonObj.employees.push({"firstName":"Waqar", "lastName":"Alamgir"});
console.log(jsonObj);
Комментарии:
1. Это допустимый JSON!
2. Нет, это не так. JSON — это формат сериализации строк . У вас есть объектный литерал JS.
3. Тот, о котором вы говорите, закодирован в массиве JSON, пользователь спрашивает о массиве JSON!!
4. Нет, нет такой вещи , как «массив JSON». Существуют «массивы, закодированные в формате JSON». Ни в вопросе, ни в вашем ответе такой объект не отображается.
Ответ №4:
Проверьте эту скрипку —http://jsfiddle.net/FamBn/1 /
HTML:
<input type="text" id="firstname" />
<input type="text" id="lastname" />
<input type="submit" id="add" />
<div id="dsp"></div>
JS:
var employees=[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
];
$('#add').click(function(){
var fname=$('#firstname').val();
var lname=$('#lastname').val();
employees.push({
firstName: fname,
lastName: lname
});
var output = '';
for (var i=0; i<employees.length; i ) {
output = "FirstName: " employees[i].firstName " LastName: " employees[i].lastName;
}
$('#dsp').html(output);
console.log(employees);
});