цикл forEach для массива строк в JavaScript - PullRequest
0 голосов
/ 22 мая 2019

У меня есть массив строк.Я хотел бы заполнить строки в пустую строковую переменную, используя цикл forEach.В консоли я могу распечатать (l и r одновременно). Я бы хотел, чтобы каждое значение печаталось в тексте заполнения один раз.Я не хочу присоединяться к струнам.Что я делаю не так?

ch_labels = ['l', 'r'];

let ch = '';

let _ch_text = this.ch_labels.forEach(function(value) {
  console.log('channel names:', value);
  ch = value;
});

this.canvas.fillText(ch, 0, 0, 0);

console.log('names', ch);

Ответы [ 3 ]

2 голосов
/ 22 мая 2019

Вы можете попробовать этот код:

ch_labels = ['l', 'r'];

ch_labels.forEach(function(value, index) {
  console.log('channel names:', value);
  this.canvas.fillText(value, 0, index * 30);
});

это привлечет ваши каналы один под другим

1 голос
/ 22 мая 2019

Чтобы получить ожидаемый результат, вам нужно добавить значение в переменную ch вместо определения значения, например:

ch += value;

Также обратите внимание, что вы не можете записать на холстнепосредственно.canvas.fillText будет неопределенным.Используйте context вместо canvas.

Итак, ваш код будет:

canvas = document.querySelector("canvas");
context = canvas.getContext("2d");

ch_labels = ['l', 'r'];

let ch = '';

this.ch_labels.forEach(function(value,index) {
  console.log('channel names:', value);
  this.context.fillText(ch, (index+1)*30, 10 );
  ch += value;
});

console.log('names', ch);
<canvas width="200" height="200"></canvas>
0 голосов
/ 22 мая 2019

ch_labels = ['l', 'r'];

let ch = '';

let _ch_text = this.ch_labels.forEach(function(value) {
  console.log('channel names:', value);
  ch += value;
});

console.log('names', ch);

проблема в том, что вы заново присваиваете значение, вы можете использовать ch = ch + value или сокращенный путь ch + = value

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...