Как я могу обработать строку массива через итерацию в Typescript - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть этот массив строк:

color = ['red','blue','purple'];

Я хочу напечатать сообщение, которое говорит:

цвет (красный, синий, синий) фиолетовый ')

Если я напишу это:

color.forEach((c) => {
      console.log(`color in ('${c}')`);
    });

Я получаю это сообщение:

цвет (красный) цвет в («синий») цвет («фиолетовый»)

Как получить первое сообщение?

Ответы [ 4 ]

3 голосов
/ 13 февраля 2020

Вам нужно map каждого цвета, чтобы добавить к нему кавычки, затем join их вместе:

const colors = ['red','blue','purple'];
console.log(`color in (${ colors.map(c => `'${c}'`).join(',') })`);

Хотя я не уверен, почему вы так поступили именно так. В целях отладки, просто console.log('color in', colors) вполне подойдет. Для сообщений, видимых пользователю, вы, вероятно, просто используете colors.join(', ') и / или более сложное форматирование, используя ..., ... and ....

0 голосов
/ 13 февраля 2020

Другой альтернативой может быть функция Array.from.

Вы можете вызвать функцию Array.prototype.join без параметра, и запятая будет использоваться в качестве разделителя.

Array.prototype.join ()

Параметр separator Необязательно

Указывает строку для разделения каждой пары смежных элементов массива. Разделитель преобразуется в строку при необходимости. Если опущено, элементы массива разделяются запятой (","). Если separator - пустая строка, все элементы объединяются без каких-либо символов между ними.

const colors = ['red','blue','purple'];
console.log(`color in (${ Array.from(colors, c => `'${c}'`).join() })`);
0 голосов
/ 13 февраля 2020

Используйте forEach l oop таким образом

var color = ['red','blue','purple'];
var str='color in (';
color.forEach(e=>str+="'"+e+"',")
str=str.substring(0,str.length-1)+')';
console.log(str)
0 голосов
/ 13 февраля 2020

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

color = ['red','blue','purple'];

console.log(`color in (${color.map(item => "'" + item + "'").toString()})`); // color in ('red','blue','purple')
...