let destUpdate = this.state.destinations.filter((dest) => {
return !toRemove.includes(dest);
})
这是我的代码。通常,它可以按我的意愿工作,但是我有一个具体的例子,它做得很奇怪。
在示例中,this.state.destinations
包含仅包含一个元素,而toRemove
是一个空数组。
由于toRemove为空,所以过滤器将返回true,并且应将dest添加到新数组,但是从过滤器(destUpdate)
返回的数组为空。
怎么会这样?
另外,如果我这样编写代码:
let destUpdate = [];
this.state.destinations.forEach((dest) => {
if (!toRemove.includes(dest))
destUpdate.push(dest);
});
destUpdate仍然为空(在toRemove
为空而this.state.destinations
包含的示例中仅包含一个元素)
更新:
toRemove: []
this.state.destinations: [{"lat":51.4862408,"lng":-0.1601986,"name":"National Army Museum","place_id":"ChIJma2VQBEFdkgRfxsd5E7cC3c","open":null,"timeSpent":1,"types":["tourist_attraction","museum","point_of_interest","establishment"],"assignedTime":"14:00 Friday","date":"10/4/2020"}]
此外,此代码还会打印一个非空数组(根据需要):
console.log(this.state.destinations.filter((dest) => {
return !toRemove.includes(dest);
}))