Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Область видимости массива(что-то странное...) (https://javascript.ru/forum/node-js-io-js/63394-oblast-vidimosti-massiva-chto-strannoe.html)

yurikjke 05.06.2016 13:09

Область видимости массива(что-то странное...)
 
Что это такое творится ?!
router.post('/admin/recipes/create_recipe', function (req, res) {
var selectedIngredients = new Array(req.body.ingredients.length);
for(var i = 0; i < req.body.ingredients.length; i++) {
var id = new ObjectId(req.body.ingredients[i]);
Ingredients.findById(id.path, function(err, ingredient) {
console.log(ingredient);//выводит информацию про ингредиент
selectedIngredients[i].push(ingredient);
console.log(selectedIngredients[i]); //выводит информацию про выбранный елемент
});
};
console.log("selectedIngredients");// а тут массив = []
});

Alex_63 05.06.2016 13:16

yurikjke,
Хоть бы отформатировали код...
router.post('/admin/recipes/create_recipe', function (req, res) {
    var selectedIngredients = new Array(req.body.ingredients.length);
    for(var i = 0; i < req.body.ingredients.length; i++) {
        var id = new ObjectId(req.body.ingredients[i]);
        Ingredients.findById(id.path, function(err, ingredient) {
            console.log(ingredient);
            selectedIngredients[i].push(ingredient);
            console.log(selectedIngredients[i]); 
        });
    };
    console.log(selectedIngredients);
});

Coriolan161 05.06.2016 20:04

yurikjke,
Короче, браток, я не понимаю зачем ты так используешь push
selectedIngredients[i].push(ingredient);

push это метод для чего-то положить в конец массива. И если ты не хочешь получить массив массивов, то надо исправить
selectedIngredients[i] = ingredient;


Ещё:
1) Тебе принципиально создавать массив фиксированной длины?
var selectedIngredients = new Array(req.body.ingredients.length);


2) Ты грузишь цикл обращениями к свойству
for(var i = 0; i < req.body.ingredients.length; i++) {

Botik21 05.06.2016 22:34

А в чём собственно вопрос/проблема? :)


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