Получить результат из функции карты массива - PullRequest
0 голосов
/ 10 октября 2019

У меня проблемы с получением результата для 'newestLine' из функции карты массива. Я не могу понять, почему переменная не доступна за пределами центральной функции. Я пробовал async и await, но тот же результат. Первое console.log дает правильный результат, вторые два дают неопределенное.

         var currentArr = [+1+SN5M+K114987A+ZO1075892+ICRR+191009+000000+GU345HB+EC2419+1 ITEMS, +1+SN5M+K114987A+ZO1075892+I139+191009+151600+COVENTRY DEPOT+EC2419+1 ITEMS, +1+SN5M+K114987A+ZO1075892+ISCN+191009+151600+GU345HB+EC2419+1 ITEMS]

            currentArr.map(function(obj) {     
            if (obj.split('+')[7] > maxid) {
                maxid = obj.split('+')[7]; 
                var newestLine = obj;
                console.log(newestLine);
                return newestLine;
            }
            console.log(newestLine);
            return newestLine;
        });
        console.log(newestLine);

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Вторые два newestLine дают неопределенное значение из-за того, что переменная newestLine выходит из их области видимости.

Делайте так

var newestLine;
currentArr.map(function(obj) {     
            if (obj.split('+')[7] > maxid) {
                maxid = obj.split('+')[7]; 
                newestLine = obj;
                console.log(newestLine);
                return newestLine;
            }
            console.log(newestLine);
            return newestLine;
        });
        console.log(newestLine);
1 голос
/ 10 октября 2019

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

var currentArr = [+1+SN5M+K114987A+ZO1075892+ICRR+191009+000000+GU345HB+EC2419+1 ITEMS, +1+SN5M+K114987A+ZO1075892+I139+191009+151600+COVENTRY DEPOT+EC2419+1 ITEMS, +1+SN5M+K114987A+ZO1075892+ISCN+191009+151600+GU345HB+EC2419+1 ITEMS]
 var newestLine;
            currentArr.map(function(obj) {     
            if (obj.split('+')[7] > maxid) {
                maxid = obj.split('+')[7]; 
                 newestLine = obj;
                console.log(newestLine);
                return newestLine;
            }
            console.log(newestLine);
            return newestLine;
        });
        console.log(newestLine);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...