我有这个数组:
items: [
{
_id: 1,
name: honda,
isOpened: false
},
{
_id: 2,
name: suzuki,
isOpened: false
},
{
_id: 3,
name: audi,
isOpened: false
}
]
这个数组:
orders: [
{
_id: 123,
user: Mark,
ordersName: honda
},
{
_id: 124,
user: Angela,
ordersName: honda
},
{
_id: 125,
user: Ana,
ordersName: suzuki
}
]
我正在使用以下代码:
const dd = this.props.items.filter(({ name: name1, isOpened = isOpened }) =>
this.props.ordersList.some(
({ ordersName: name2 }) => name1 === name2 || isOpened === true
)
)
工作正常。但是,当数据库中没有特定项目的订单时,当我单击“订单”按钮时,不显示包含项目数据的div,它仅在我有订单时显示。加载网站时,如果有一些订单,则会显示一个包含项目和订单列表的div,但是当我单击打开/显示项目时,没有订单时,它不会显示。
我正在使用const dd上的映射,就像这样:
<div>
<div>
{dd.map(response => {
response.isOpened = true;
return (
<div className="panel" key={response._id}>
<h1>{response.name}</h1>
<div>
{this.props.ordersList.map(res => {
if (response.name == res.ordersName) {
return (
<div>
<h3>{res.ordersName}</h3>
</div>
);
}
})}
</div>
</div>
);
})}
</div>
</div>
我不知道我是否解释得很好。
答案 0 :(得分:0)
如果要说餐厅是open
并且有some order
,我想这似乎更合乎逻辑,如果没有订单,您可以只显示There is no order
const items = [{
_id: 1,
name: "honda",
isOpened: true
},
{
_id: 2,
name: "suzuki",
isOpened: true
},
{
_id: 3,
name: "audi",
isOpened: false
}
]
const orders = [{
_id: 123,
user: "Mark",
ordersName: "honda"
},
{
_id: 124,
user: "Angela",
ordersName: "honda"
},
{
_id: 125,
user: "Ana",
ordersName: "suzuki"
}
]
const dd = items.filter(({
name: name1,
isOpened
}) => {
if (isOpened)
return orders.filter(
({
ordersName: name2
}) => name1 === name2
)
}
)
console.log(dd)
答案 1 :(得分:0)
我已使用以下代码解决了我的问题:
const dd1= this.props.items.filter(({name: name1}) => this.props.orders.some(({ordersName: name2}) => name1 === name2)); dd1.map(itms=>{ itms.isOpened=true }) const dd=this.props.items.filter(itm=>{ return itm.isOpened==true })
有什么方法可以用更少的行来编写代码?甚至是一行代码?