Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Push в массив из функции с объектом (https://javascript.ru/forum/misc/28466-push-v-massiv-iz-funkcii-s-obektom.html)

volkovics 21.05.2012 10:40

Push в массив из функции с объектом
 
Не совсем уверен с выбором заголовка, но по скольку я новенький, думаю простите.

И так, уже битый час мучаюсь с пустяком.
Передо мной стоит задача, сделать push в массив, через безымянную функцию, с использованием объекта.

Вот собственно мой код:

var lunch = [];
var addLunchFood = function(name,calories){
    var food = {name:calories};
    lunch.push(food);
};
addLunchFood('Burger',900);
addLunchFood('Fries',700);
addLunchFood('Soda',300);


Тут есть ошибка, но я не могу понять где. Нужно, чтобы в массив lunch записались те 3, которые снизу (не знаю, как это правильно называется :[ ).

Уже искал ответы тут:
http://javascript.ru/tutorial/object/intro

и тут:
http://javascript.ru/Function

Будьте добры, подскажите пожалуйста, где ошибка? Или подтолкните в правильном направлении.

Gvozd 21.05.2012 11:31

var food = {name:calories};//создаем объект с полем "name", и значением равным переменной calories
//эквивалентный код:
var food = {};
food.name = calories;


а вам нужно так:
var food = {};
food[name] = calories;
//создаем объект с полем имя которого равно переменной name, и значением равным переменной calories

http://javascript.ru/accessors

volkovics 21.05.2012 12:05

Цитата:

Объект представляет собой обычный ассоциативный массив (словарь, хэш). Ключами этого массива являются имена свойств и методов (свойств, являющихся ссылкой на функцию).
Признаться честно, я перечитал это раз 10. Каждый раз всё медленнее и медленнее и всёравно не понял, что же такое аксессоры, точнее принцип его работы.

И кстати говоря:
var food = {};
food[name] = calories;
//создаем объект с полем имя которого равно переменной name, и значением равным переменной calories


Не решило проблемы, а если это был, как толчок в правильное направление, то я не понял. :(

volkovics 21.05.2012 12:14

Собственно, я попробую описать более подробней.

Вот задача, целиком и полностью:

Lunch with Objects, Arrays and Functions

Now that we are keeping track of what we are eating, how about we add the amount of calories that each of these food items contain. To do this each item in our array will need to be an Object. The object will store the name and the calorie count of each food item in our array. Because it's all going to be a little different let's do this for lunch.

We have a pretty good start on this one all we need to do is push our name and calorie values into our lunch array. To do this define a variable called food and assign an object with the {} to it. This object is going to contain the name and calories arguments. Then push this food variable into our lunch array.

И к этому всему дан код, который нужно модифицировать, дабы он заработал:

var lunch = [];
var addLunchFood = function(name,calories){
    
};
addLunchFood('Burger',900);
addLunchFood('Fries',700);
addLunchFood('Soda',300);


Вот собственно и вся задача.


________________________________

Вообщем, вся ошибка заключалась в том, что нужно было в объекте указать вот так:

var food = {name:name, calories:calories};


Извиняюсь, что нафлудил.


Часовой пояс GMT +3, время: 11:38.