我有一个应用程序,用户可以浏览图片库(通过API获取的图像数组)和" favorites "图像,它创建一个单独的数组,并在页面的下一个部分中显示它们。它工作得很好,但允许重复。
我创建了一个for循环,它循环遍历favorites数组,并将当前活动幻灯片与数组的内容进行比较,如果有人试图添加图像两次,它将显示错误消息。不幸的是,它不工作,但也没有抛出错误。
然而,如果我将项目推到for循环之外的数组(第3行在这里目前被注释掉),它会按预期工作(即日志重复)。我不明白为什么for循环不运行…
faveBtn.addEventListener('click', () => {
let faveHtml = ''
//faveArray.push(imagesArray[activeSlide])
for (let i = 0; i < faveArray.length; i++) {
if (imagesArray[activeSlide] === faveArray[i]) {
console.log('Duplicate')
} else {
console.log('Not duplicate')
faveArray.push(imagesArray[activeSlide])
}
faveHtml += `< img class = "fave-img"
src = "${faveArray[i]}" > `
}
faveImages.innerHTML = faveHtml
})
感谢大家的指导。这里已经指出了"长度"。空数组的。我添加了一些占位符数据,调整了我的代码以包含第二个循环,现在它按我想要的方式工作:
let faveHtml = ''
let dupeFound = false
for (let i = 0; i < faveArray.length; i++) {
if (imagesArray[activeSlide] === faveArray[i]) {
dupeFound = true
for (let j = 0; j < faveArray.length; j++) {
faveHtml += `<img class="fave-img" src="${faveArray[j]}">`
}
}
}
if (!dupeFound) {
faveArray.shift()
faveArray.push(imagesArray[activeSlide])
for (let j = 0; j < faveArray.length; j++) {
faveHtml += `<img class="fave-img" src="${faveArray[j]}">`
}
}
faveImages.innerHTML = faveHtml
})```
Now I just need to re-factor it a bit.