ES6将数组映射到不带逗号的字符串

时间:2017-07-05 08:01:28

标签: javascript arrays ecmascript-6

我正在尝试将错误列表映射到我将在工具提示中显示的列表中。添加了列表,但每个li元素之间都添加了,

我想这是因为这最终基本上会errors.map(error => ...).toString()。任何想法如何在errors数组中映射字符串而不添加此逗号?

data-tip = {`
  Precisa de corrigir os seguintes problemas antes de publicar o anúncio:</br>
  <ul>
    ${errors.map(error => `<li>${error}</li>`)}
  </ul>
`}

4 个答案:

答案 0 :(得分:18)

数组对象的

.toString()使用Array.prototype.join方法将数组转换为字符串。默认情况下,.join方法使用,来加入元素。您可以将.toString()替换为.join('')

答案 1 :(得分:11)

在您的代码中,您使用的是模板文字,它返回一个字符串,因此返回代码

 ${errors.map(error => `<li>${error}</li>`)}
使用toString()函数将

转换为字符串,该函数默认将返回的数组与,连接。

您可以使用与其他分隔符(例如

)的联接
{`
  Precisa de corrigir os seguintes problemas antes de publicar o anúncio:</br>
  <ul>
    ${errors.map(error => `<li>${error}</li>`).join(' ')}
  </ul>
`}

答案 2 :(得分:0)

您可以尝试这种方式::

let arrayOfStr = [10, 20, 45, 12, 65 ];

let myNumberOfStr = arrayOfStr.map( number => `myNumber_${number}` ).join(' ');

console.log(myNumberOfStr); 
// "myNumber_10 myNumber_20 myNumber_45 myNumber_12 myNumber_65"

答案 3 :(得分:0)

只需使用reduce。像这样:

data-tip = {`
  Precisa de corrigir os seguintes problemas antes de publicar o anúncio:</br>
  <ul>
    ${errors.reduce(
      (prevError, currentError) => `${prevError}<li>${currentError}</li>`, '',
    )}
  </ul>
`}