Цикл внутри цикла

244
21 апреля 2017, 20:41

Собрал вот такую конструкцию. Вроде проста. Но работать не хочет. Почему?

var weights = [];
function initialize_weights() {
    var array_weights = [];
    var w = 0;
    for(var n = 0; n < 3; n++) {
        for(w = 0; w < 5; w++) {
            array_weights[w] = n + "_" + w;
        }
        weights[n] = array_weights;
    }
}

Конечный массив должен выглядеть так:

[ '0_0', '0_1', '0_2', '0_3', '0_4' ], [ '1_0', '1_1', '1_2', '1_3', '1_4' ], [ '2_0', '2_1', '2_2', '2_3', '2_4' ]

Но он почему-то выглядит так:

[ '2_0', '2_1', '2_2', '2_3', '2_4' ], [ '2_0', '2_1', '2_2', '2_3', '2_4' ], [ '2_0', '2_1', '2_2', '2_3', '2_4' ]

Что-то не так с переменной n.

Answer 1

function initialize_weights() { 
  var weights = []; 
  for (var n = 0; n < 3; n++) { 
    var array_weights = []; 
    for (var w = 0; w < 5; w++) { 
      array_weights.push(n + '_' + w); 
    } 
    weights.push(array_weights); 
  } 
  return weights; 
} 
var weights = initialize_weights(); 
console.log(weights);

Без использования push():

var weights = []; 
function initialize_weights() { 
  for (var n = 0; n < 3; n++) { 
    var array_weights = []; 
    for (var w = 0; w < 5; w++) { 
      array_weights[w] = n + "_" + w; 
    } 
    weights[n] = array_weights; 
  } 
} 
initialize_weights(); 
console.log(weights);

READ ALSO
Angular2 PrimeNG, не работает ng-template

Angular2 PrimeNG, не работает ng-template

Использую набор компонентов PrimeNG, хочу кастомизировать элемент Tree (https://wwwprimefaces

316
Рандомное повторение действия в цикле

Рандомное повторение действия в цикле

Есть класс в стиляхanimation1 он должен вызываться постоянно (в цикле), но в рандомный промежуток и после удалятся, и повторятся снова, а то есть...

196
Выпадающий список с инпутом и чекбоксом

Выпадающий список с инпутом и чекбоксом

Добрый день Подскажите пожалуйста, как можно реализовать выпадающий список с инпутомМожет есть какой-нибудь плагин

699