【发布时间】:2023-03-28 15:03:01
【问题描述】:
我的 for 循环有问题
function drawProductUI(array){
var productsUI = array.map((item) => {
if (productsInFavArr) {
for(let j=0; j < productsInFavArr.length; j++){
console.log(j);
if(productsInFavArr[j].id===item.id)
console.log(j);
}
}
});
}
productsInFavArr 是localstorage 中的对象数组
当我在 if 语句之前 console.log(j) 时,它会给我输出:
0
1
这是正确的,因为我有两个对象
但是当我在 if 语句之后使用它时,它只给了我第一个 true,即:
0
还有两个 item.id === productsInFavArr[j].id 所以它们都是真的
这里是 productsInFavArr
let productsInFavArr = [
{
title: "Sunglasses",
imgURL: "images/Products/sunglasses.jpg",
desc: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Aut nulla adipisci fugiat pariatur recusandae repudiandae fuga molestias doloremque itaque obcaecati.",
price:80,
id: 1
},
{
title: "Laptop",
imgURL: "images/Products/laptop.jpg",
desc: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Aut nulla adipisci fugiat pariatur recusandae repudiandae fuga molestias doloremque itaque obcaecati.",
price:100,
id: 2
}]
谢谢
【问题讨论】:
-
map用于转换数据。返回的数据是返回的结果(因为你有一个函数体箭头函数),但你没有显示return语句。 -
productsInFavArr 是本地存储中的对象数组 localStorage 只保存字符串,不保存数组或对象。您是否使用
JSON.parse()将字符串转换回对象? -
你能正确缩进代码吗?你能举个例子说明数组是什么吗?
-
@crashmstr 我做了 return 声明,但我没有,但它在这里因为它太长了,我希望它看起来很简单,但它工作正常
-
你的代码需要清理和缩进
标签: javascript arrays for-loop if-statement