Javascript 从嵌套循环获取信息以有条件地呈现jsx
我有一个对象,我必须在其中循环两次,以检查我应该在react中渲染什么 我的尝试:Javascript 从嵌套循环获取信息以有条件地呈现jsx,javascript,reactjs,loops,Javascript,Reactjs,Loops,我有一个对象,我必须在其中循环两次,以检查我应该在react中渲染什么 我的尝试: // categories is my nested object const checkedCategories = [...categories]; for (let i = 0; i < categories.length; i++){ for (let j =0; j < categories[i].products.length; j++){ const currentImag
// categories is my nested object
const checkedCategories = [...categories];
for (let i = 0; i < categories.length; i++){
for (let j =0; j < categories[i].products.length; j++){
const currentImageType = categories[i].products[j].imageTypes;
// get information from action in store(mobx) to check if image exists
const image = images.getDefault(currImageType);
if (image) {
//error cannot add property visible, object is not extensible
checkedCategories[i].visible = true;
}
}
}
const categoryTabs = checkedCategories.map((category, index) => {
if (category.visible){
return (
<Product
key={category.name}
product={category.products}
/>
)
}
});
//类别是我的嵌套对象
常量checkedCategories=[…类别];
for(设i=0;i{
如果(类别可见){
返回(
)
}
});
我想了解如何解决不可扩展对象的问题,并仅渲染具有图像的对象(我从嵌套循环中获得的存储信息)您的循环中有错误。如果您将循环更改为下面的,它应该可以工作。下面的代码更清晰,更容易推理
const checkedCategories = [];
categories.forEach(cat => {
let isVisible = false;
cat.products.forEach(product => {
const image = images.getDefault(product.imageTypes);
isVisible = isVisible || !!image;
});
checkedCategories.push(Object.assign({}, cat, { visible: isVisible });
};
现在还不清楚你想做什么,但看看你的代码,这似乎是不正确的:
for(让j=0;j
。你是说for(让j=0;j
?是的,当然,但是这个错误有一个问题://错误无法添加可见的属性,对象不可扩展它更干净,但我得到了相同的错误//错误无法添加可见的属性,对象不可扩展对不起,应该使用checkedCategories来完成整个任务吗?从原始问题看不清楚您是否有自由ze
您的对象在某个点?您可以创建一个新对象,而不是指定可见的对象。我使用严格模式,我必须使用此模式,但如何以这种方式执行我想要的操作?我想用额外的键创建新对象(如果图像存在,则可见)然后循环此新对象以仅在关键点可见时渲染。@DawidkwiattonńI更新了我的答案以创建新对象。