Javascript 我能';设置状态时是否过滤数据?
我有一个两个数组,第一个数组包含所有订单,第二个数组包含我从数据库获得的拒绝订单 我需要筛选这些订单,并根据快照密钥从中删除所有被拒绝的订单 所以在运行我的代码之后 我看到所有订单并包含被拒绝的订单,尽管我在控制台测试了我的代码,它工作正常,但在我的React应用程序中不工作 订单数组Javascript 我能';设置状态时是否过滤数据?,javascript,arrays,reactjs,react-native,filter,Javascript,Arrays,Reactjs,React Native,Filter,我有一个两个数组,第一个数组包含所有订单,第二个数组包含我从数据库获得的拒绝订单 我需要筛选这些订单,并根据快照密钥从中删除所有被拒绝的订单 所以在运行我的代码之后 我看到所有订单并包含被拒绝的订单,尽管我在控制台测试了我的代码,它工作正常,但在我的React应用程序中不工作 订单数组 let ordersArray = [ {"snapshotKey":"-awdawadsdwwd","username":"Joe"}, {"snapshotKey":"-badsdasdad","
let ordersArray = [
{"snapshotKey":"-awdawadsdwwd","username":"Joe"},
{"snapshotKey":"-badsdasdad","username":"Annna"},
{"snapshotKey":"-dasQwaddas","username":"lee"}
]
let rejectedOrders = ["-awdawadsdwwd","-dasQwaddas"] //these orders snapshot keys
为了使我的代码简短,我将把过滤的片段
在得到命令并将其推送到单独的数组后,我将状态设置为
this.setState({
orders: orderArr.filter(
order => !rejectedOrders.some(key => order.snapshotKey === key),
),
loading: false,
});
但遗憾的是,我没有经过任何过滤就收到了这三份订单
编辑1
Const {rejectedOrders}= this.state;
database()
.ref(
`Providers/CategoriesOrders/${service ||
serviceStorage ||
serviceName}/${uid}`,
)
.on('value', snapshot => {
console.log(snapshot.val());
let orderArr = [];
snapshot.forEach(childSnapshot => {
orderArr.push({
snapshotKey: childSnapshot.key,
username: childSnapshot.val().username,
buildingNumber: childSnapshot.val().buildingNumber,
service: childSnapshot.val().categoryName,
date: childSnapshot.val().date,
time: childSnapshot.val().time,
description: childSnapshot.val().problemDescription,
status: childSnapshot.val().status,
images: childSnapshot.val().Images,
});
});
this.setState({
orders: orderArr.filter(
order => !rejectedOrders.some(key => order.snapshotKey === key),
),
loading: false,
});
});
这应该行得通,我想你在别的地方遇到了问题。@AkhilNayak再次检查这个问题please@goto1是的,我在单独的js文件中测试了它,效果很好,我不知道为什么不在这里工作:/@AkhilNayak我收到了所有订单!这应该很好,你在哪里看到它不起作用?