打印效果和要求完全一致

告诉我们发生了什么:
在此详细描述你的问题。

  **你目前的代码**

const result = {
success: ["max-length", "no-amd", "prefer-arrow-functions"],
failure: ["no-var", "var-on-top", "linebreak"],
skipped: ["no-extra-semi", "no-dup-keys"]
};
function makeList(arr) {
// 只修改这一行下面的代码
const failureItems = `
  [
    ${arr.map((i, index) => `${index > 0 ? '
      ' : ''}'<li class="text-warning">${i}</li>'`)}
  ]`;
// 只修改这一行上面的代码
console.log(failureItems);
return failureItems;
}

const failuresList = makeList(result.failure);

虽然我使用
const failureItems = arr.map(i => <li class="text-warning">${i}</li>);
上面这个写法通过了测试,但是实际上它打印出来的内容与要求并不相符

  **你的浏览器信息:**

用户代理是: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36

挑战: 使用模板字面量创建字符串

挑战的链接:

你对这道题输出的理解有所偏差。function makeList(arr) 要返回一个数组,而不是一个字符串。

题目中提供的输出的结果,是指通过 console.log(failuresList) 输出的结果。

我用 console.log(failuresList)

const failureItems = arr.map(i => `<li class="text-warning">${i}</li>`);

的结果进行输出,得到如下结果

[ '<li class="text-warning">no-var</li>',
  '<li class="text-warning">var-on-top</li>',
  '<li class="text-warning">linebreak</li>' ]

这与题目要求基本一致。


你的代码似乎是在尝试拼装整个输出字符串。这个是没有必要的,console.log 会自动对数组输出进行格式化(包括前后加 [] 和用 , 分隔元素)。同时题目对结果的判定是依据 failuresList 的内容,而不是 console.log 的输出。

我觉得你说得很有道理,我太着眼于此题所考察的字符串模板这个点,忽略了方法本身,感谢指正:person_fencing: