Как положить результат работы функции в глобальную переменную

431
08 декабря 2017, 05:55

var resultVal; 
 
var newObj = { 
    item0: '0000', 
    item1: '0001', 
    item2: '0002', 
    item3: '0003', 
    item4: '0004', 
    item5: '0005' 
}; 
 
var indexToFind = ['item1', 'item3', 'item5']; 
 
$.each(newObj, function(index, value) { 
 
        if ( indexToFind.indexOf(index) != -1 ) { 
        resultVal = value; 
 
        } 
 
        console.log(resultVal); 
 
}); 
 
console.log(resultVal);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

Почему когда я хочу посмотреть значения из переменной resultVal вне теле функции мне выводит только 1 значение? А когда я смотрю значения в теле функции все значения видны ? Вопрос собственно в том как все нужные мне значения сохранить в глобальную переменную ?

Answer 1

Как один из вариантов:

"=" - Это присвоение значения к переменной.

"+" - Это сложение.

Можно сделать вот так: "x = x + y" тоже самое упрощенно получится: "x += y"

Наглядно будет так, по циклу:

x = "";   Y = "0001", Y = "0003", Y = "0005" //Присвоение переменой Y значения из массива по циклу.
x += y;
X = "" + "0001\n" + "0003\n" + "0005\n"
result: 
      001
      003
      005

var resultVal =""; 
 
var newObj = { 
    item0: '0000', 
    item1: '0001', 
    item2: '0002', 
    item3: '0003', 
    item4: '0004', 
    item5: '0005' 
}; 
 
var indexToFind = ['item1', 'item3', 'item5']; 
 
$.each(newObj, function(index, value) { 
 
        if ( indexToFind.indexOf(index) != -1 ) { 
          resultVal += value+ "\n"; 
        }            
       //console.log(resultVal); 
}); 
 
console.log(resultVal);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

Answer 2

Потому что Вы каждый раз присваиваете переменной resultVal другое значение. Конечно она не будет помнить, чему была равна до этого. Если Вам надо собрать набор значений, используйте массив:

var resultVal = []; 
 
var newObj = { 
    item0: '0000', 
    item1: '0001', 
    item2: '0002', 
    item3: '0003', 
    item4: '0004', 
    item5: '0005' 
}; 
 
var indexToFind = ['item1', 'item3', 'item5']; 
 
$.each(newObj, function(index, value) { 
 
    if ( indexToFind.indexOf(index) != -1 ) { 
        resultVal.push(value); 
    } 
 
}); 
 
console.log(resultVal);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

READ ALSO
Как сравнить два множества (set) в JavaScript?

Как сравнить два множества (set) в JavaScript?

Как можно сравнить два множества (Set) в JavaScript?

291
Uncaught TypeError: Cannot set property &#39;backgroundImage&#39; of undefined

Uncaught TypeError: Cannot set property 'backgroundImage' of undefined

Uncaught TypeError: Cannot set property 'backgroundImage' of undefined

311
JS файл разбить на несколько файлов

JS файл разбить на несколько файлов

Как разделить это на файлы , если вообще не понятно ничего ?

251
React+Redux обновление стора

React+Redux обновление стора

Как отследить изменение стора в Redux? В интеренете нашел что используется метод componentWillReceivePropsЯ пытаюсь в нем вызвать метод который подгружает...

336