Заполните массив внутри каждого цикла jquery - PullRequest
0 голосов
/ 12 июня 2018

Я хотел бы получить значения из массива, созданного внутри каждого цикла

var arr = [];

$.each([52, 97], function(index, value) {

    var arr = [value];

});

console.log(arr);

Но в записанном массиве нет записи.

Ответы [ 4 ]

0 голосов
/ 12 июня 2018

Вы можете просто использовать синтаксис распространения , чтобы скопировать элемент массива без ссылки.Это означает, что вы можете самостоятельно изменять содержимое любого массива, не влияя на содержимое других.

var arr1 = [ 52, 97 ];
var res = [...arr1];
console.log(res);
0 голосов
/ 12 июня 2018

Ошибка, которую вы сделали, это var arr = [ value]; переинициализированная переменная и неправильная установка индекса массива.

var arr = [];

$.each([52, 97], function(index, value) {

  arr[index] = value;

});

console.log(arr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Вы также можете сделать это с push(), как в другом ответе (@Boris Bresciani).

0 голосов
/ 12 июня 2018

Ваша переменная arr внутри функции отличается от внешней переменной arr, но является локальной для функции.Чтобы исправить это, не создавайте новую локальную переменную, но позвольте функции ссылаться на внешнюю переменную (это называется закрытием).Это должно работать:

var arr =[];
$.each([ 52, 97 ], function( index, value ) { 
  arr.push(value); 
});
console.log(arr);
0 голосов
/ 12 июня 2018

Ошибка, которую вы сделали, это var arr = [ value]; реинициализированная переменная, проверьте это:

var arr =[];
$.each([ 52, 97 ], function( index, value ) {
 arr.push(value);
});
console.log(arr);
...