使用forEach方法使用Template Literals创建字符串



有人能帮我修复代码吗?我在这个练习中使用了forEach方法

我想我已经接近了,但它仍然没有定义,它已经在结果中了。失败是因为我添加了另一个字符串/num进行了检查。

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) {
// Only change code below this line
const failureItems = [];
const results = arr.forEach(k => failureItems.push(`<li class="text-warning">${arr[k]}</li>`));

// Only change code above this line
return failureItems;
}
const failuresList = makeList(result.failure);
console.log(failuresList);

它应该导致这个

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

但在这个代码中,我的结果是这个

[ '<li class="text-warning">undefined</li>',
'<li class="text-warning">undefined</li>',
'<li class="text-warning">undefined</li>' ]

您想要连接k。同样如注释中所述,Array#forEach返回undefined

修复上述问题:

arr.forEach(k => failureItems.push(`<li class="text-warning">${k}</li>`));

另一种使用Array#map的解决方案:

function makeList(arr) {
return arr.map(k => `<li class="text-warning">${k}</li>`);
}
const result = {
success: ["max-length", "no-amd", "prefer-arrow-functions"],
failure: ["no-var", "var-on-top", "linebreak",],
skipped: ["no-extra-semi", "no-dup-keys"]
};
const failuresList = makeList(result.failure);
console.log(failuresList);

最新更新