Я экспериментировал с циклами, но, похоже, я здесь упускаю часть: в этом фрагменте кода я дважды использую один и тот же массив [].
Я копирую весь массив [] в первую позициюмассив [[]]
, затем я перезаписываю массив []
и копирую весь массив [] с новыми значениями во вторую позицию массива [[]]
НО
по какой-то причине первая позиция тоже изменилась ??????
это то, что я ожидал: 65,44,12,4,23,42
это то, что я получил: 4,23,42,4,23,42
Я думаю, что это может быть связано с асинхронными функциями JS, но если у вас есть лучшее объяснение и решение ...
Большое спасибо
var numbers = [65, 44, 12, 4, 23, 42];
function pippo() {
var k = 3;
var colonne = [];
var riga = [
[]
];
for (j = 1; j < k + 1; j++) {
y = 0 * k + j - 1;
colonne[j - 1] = numbers[y];
}
riga[0] = colonne;
for (j = 1; j < k + 1; j++) {
y = 1 * k + j - 1;
colonne[j - 1] = numbers[y];
}
riga[1] = colonne;
demo.innerHTML = riga[0].concat(riga[1]);
}
------------------- это полный код.Идея заключается в том, чтобы поэкспериментировать с массивом nmbers.
здесь весь код:
<!DOCTYPE html>
<html>
<body>
<button onclick="pippo()">Try it</button>
<p>Updated array: <span id="demo"></span></p>
<script>
var numbers = [65, 44, 12, 4, 23 , 42];
function pippo() {
var k = 3;
var colonne = [];
var riga = [[]];
for (j=1;j<k+1;j++ ){
y = 0*k+j-1;
colonne[j-1] = numbers[y];
}
riga[0] = colonne;
for (j=1;j<k+1;j++ ){
y = 1*k+j-1;
colonne[j-1] = numbers[y];
}
riga[1] = colonne;
demo.innerHTML = riga[0].concat(riga[1]);
}
</script>
</body>
</html>
//-------------------the original outer loop:
for (w = 0 ;w < (numbers.length)/k ;w++) {
for (j=1;j<k+1;j++ ){
y = w*k+j-1;
colonne[j-1] = numbers[y];
}
riga[w] = colonne;
}