1. ホーム
  2. javascript

[解決済み] map()での予期せぬカンマの使用

2023-01-28 20:23:22

質問

要素のリストを持つ配列があり、テンプレート文字列を使用してこのリストをHTML要素に追加しようとしています。

var description = [
  'HTML & CSS',
  'Javascript object-oriented programming',
  'Progressive Web apps (PWAs)',
  'Website Performance Optimization',
  'Webpack and Gulp workflows',
  'Fullstack React.js',
  'Web Components',
  'Responsive web design',
  'Sketch design',
  'GraphQL and Relay'
]

$('body').append(
  `
  <div class="description">
    <ul>
      ${description.map(
        function(work) {
          return `<li>${work}</li>`
        }
      )}</ul>
  </div>
  `
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

その結果、各リスト要素の間に予期しないカンマが発生します。(上記のコード スニペットを実行すると、これがわかります)。

どうすればこれを避けることができますか?

どのように解決するのですか?

説明

テンプレート・リテラル toString() メソッドで、デフォルトでは返された配列を map で結合します。 , .

この問題を回避するために join('')

コード

var description = [
  'HTML & CSS',
  'Javascript object-oriented programming',
  'Progressive Web apps (PWAs)',
  'Website Performance Optimization',
  'Webpack and Gulp workflows',
  'Fullstack React.js',
  'Web Components',
  'Responsive web design',
  'Sketch design',
  'GraphQL and Relay'
]

$('body').append(
  `
  <div class="description">
    <ul>
     ${
        description.map(function(work) {
          return `<li>${work}</li>`
        }).join('')
      }
    </ul>
  </div>
  `
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>