javascript область видимости переменной

190
21 августа 2017, 10:57

Добрый день, есть проблема: при обращении к переменной,на моем примере вот в этом месте console.log('nonDuplicatedArray2', nonDuplicatedArray) получаю в консоли [], при обращении к этой переменной вот в этом месте console.log('nonDuplicatedArray1', nonDuplicatedArray) получаю массив с данными. Что нужно сделать, чтобы при обращении в месте, где указан console.log('nonDuplicatedArray2', nonDuplicatedArray), я мог бы работать с данными, которые получаю.

var nonDuplicatedArray = [];
router.post('/upload', function(req, res) {
    var exceltojson;
    // var newArr = [];
    upload(req,res,function(err){
        if(err){
            res.json({error_code:1,err_desc:err});
            return;
        }
        if(!req.file){
            res.json({error_code:1,err_desc:"No file passed"});
            return;
        }
    if(req.file.originalname.split('.')[req.file.originalname.split('.').length-1] === 'xlsx'){
        exceltojson = xlsxtojson;
    } else {
        exceltojson = xlstojson;
    }
    console.log(req.file.path);
    try {
        exceltojson({
            input: req.file.path,
            output: null, //since we don't need output.json
            lowerCaseHeaders:true
        }, function(err,result){
            if(err) {
                return res.json({error_code:1,err_desc:err, data: null});
            }
            res.json(result);
            var v;
            var t;
            var remakeObj = [];
            for (var k = 0; k <result.length; k++) {
                db.member.findAll({
                    where: {
                        lastname: remakeName(result[k]).lastname,
                        name: remakeName(result[k]).name,
                        secondname: remakeName(result[k]).secondname,
                        date: remakeName(result[k]).date
                    },
                    id: 'id ASC'
                }).then(function (data1) {

                    for (var i1 = 0; i1 <data1.length; i1++) {
                        arrr.push({'fio': data1[i1].lastname + ' ' + data1[i1].name + ' ' + data1[i1].secondname, 'dr': data1[i1].date});
                    }
                    if(arrr.length>0) {
                        var arrResult = {};
                        for (var i2 = 0, n = arrr.length; i2 < n; i2++) {
                            var item = arrr[i2];
                            arrResult[item.fio + " - " + item.dr] = item;
                        }
                        var i = 0;
                        for (var item in arrResult) {
                            nonDuplicatedArray[i++] = arrResult[item];
                        }
                    }
                    console.log('nonDuplicatedArray1', nonDuplicatedArray)
                });
                console.log('nonDuplicatedArray2', nonDuplicatedArray)
            }
        });
    } catch (e){
        res.json({error_code:1,err_desc:"Corupted excel file"});
    }
})

});

READ ALSO
Лучшая реализация модальных окон

Лучшая реализация модальных окон

Хочу узнать у опытных программистов, как лучше реализовать модальное окно? Код не вставляю тк

275