gpt4 book ai didi

javascript - 从数组中删除特定项目,未按预期工作

转载 作者:行者123 更新时间:2023-11-30 08:21:24 26 4
gpt4 key购买 nike

有人能告诉我从数组中删除一个项目有什么问题吗?在带有 axios.delete 方法的 deleteSingleItemHandler 中,它的工作方式与它应该的一样,并且在 firebase 上完全删除了选定的项目但是当我想从状态数组中删除项目时,它删除了一个项目但不是完全选定的项目,例如,我单击第三个项目,在 firebase 上,它删除了第三项,并在我的设备屏幕上删除了第二项……我做错了什么?

提前致谢!干杯

class HistoryScreen extends Component {
state = {
orders: []
};

componentDidMount() {
axios
.get(".../orders.json")
.then(response => {
const fetchedOrders = [];

for (let key in response.data) {
fetchedOrders.push({
...response.data[key],
id: key
});
}

this.setState({ orders: fetchedOrders });

});
}

deleteSingleItemHandler = id => {
axios
.delete(`...orders/${id}.json`)
.then(response => {
console.log(response);
});

const newArray = [...this.state.orders];
newArray.splice(id, 1);

this.setState({ orders: newArray });
};

render() {
return (
<View style={styles.container}>
<ScrollView>
<View style={styles.completeOrder}>

{this.state.orders.map(order => {
return (
<TouchableOpacity
key={order.id}
onPress={() => this.deleteSingleItemHandler(order.id)}
>
<View style={styles.singleItem}>
<View style={styles.orderItem}>
<View style={{ flex: 1, marginLeft: 5 }}>
<Text style={{ fontFamily: Fonts.GloriaHallelujah }}>
{order.articleName}
</Text>
</View>

<View
style={{
flex: 1,
justifyContent: "flex-end",
flexDirection: "row",
marginRight: 5
}}
>
<Text>{order.articlePrice}</Text>
</View>
</View>
</View>
</TouchableOpacity>
);
})}
</View>
</ScrollView>
</View>
);
}
}

最佳答案

函数的第一个参数Array.prototype.splice是一个索引。

使用函数 Array.prototype.findIndex

newArray.splice(newArray.findIndex(o => o.id === id), 1);

或者您可以使用函数 Array.prototype.filter 过滤该对象

newArray = newArray.filter(o => o.id !== id);

关于javascript - 从数组中删除特定项目,未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52996953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com