Javascript concat не работает должным образом - не объединяется - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь объединить значения из a для l oop, однако это не объединение их в один массив, а создание отдельных массивов?

Я действительно новичок в Javascript , поэтому я, вероятно, неправильно понимаю, как использовать функцию concat. Я вставил упрощенную версию моего скрипта ниже, я хочу, чтобы выходные данные содержали все значения в одном массиве. Может ли кто-нибудь помочь направить меня в правильном направлении, пожалуйста?

Код

var fixed = document.getElementById('fixed');

var sections = document.getElementsByClassName('section');

for (i = 0; i < sections.length; i++) {
  var arr = [];

  arr = arr.concat(sections[i]);

  fixed.innerHTML = arr;
  console.log(arr);
}
<div class="fixed" id="fixed"></div>
<div class="section"></div>
<div class="section"></div>
<div class="section"></div>
<div class="section"></div>
<div class="section"></div>

Ответы [ 2 ]

1 голос
/ 23 января 2020

Переменная arr должна быть объявлена ​​один раз, вне l oop, вместо того, чтобы повторно объявлять новую переменную с именем arr каждый раз вокруг l oop.

. результаты будут накапливаться в одном массиве.

var fixed = document.getElementById('fixed');

var arr = [], sections = document.getElementsByClassName('section');

for (i = 0; i < sections.length; i++) {
  arr = arr.concat(sections[i]);

  fixed.innerHTML = arr;
  console.log(arr);
}
<div class="fixed" id="fixed"></div>
<div class="section"></div>
<div class="section"></div>
<div class="section"></div>
<div class="section"></div>
<div class="section"></div>
0 голосов
/ 23 января 2020

Объявите массив раньше для l oop, установите fixed.innerHtml после и прочитайте о javascript scope.

var fixed = document.getElementById('fixed');

var sections = document.getElementsByClassName('section');

var arr = [];

for (i = 0; i < sections.length; i++) {
  arr = arr.concat(sections[i]);
}

fixed.innerHTML = arr;
<div class="fixed" id="fixed"></div>
<div class="section"></div>
<div class="section"></div>
<div class="section"></div>
<div class="section"></div>
<div class="section"></div>
...