使用 find 与 includes 有什么区别?
What difference does that make to use find vs includes?
我正在尝试创建具有以下功能的名为 addTrack 的方法:
- 接受轨道参数
- 使用曲目的 ID 属性 检查是否
当前歌曲处于播放列表曲目状态
如果id是新的,将歌曲添加到播放列表的末尾。
设置播放列表的新状态。
如果我使用代码 #1 而不是代码 #2 会有什么不同?
PlaylistTracks 在构造函数中定义如下:
playlistTracks: [{ name: 'name1', artist: 'artist1', album: 'album1', id: 1 },
{ name: 'name2', artist: 'artist2', album: 'album2', id: 2 },
]
代码 #1
addTrack(track){
if (this.state.playlistTracks.includes(this.props.track.id)) {return;}
else {this.state.playlistTracks.push(track);
this.setState({playlistTracks:this.state.playlistTracks});
}
}
代码 #2
addTrack(track) {
if (this.state.playlistTracks.find(savedTrack => savedTrack.id===track.id) {return;}
else {return this.state.playlistTracks.push(track);}
this.setState(playlistTracks:this.state.playlistTracks)}
array.includes
将 return true 或 false 如果值存在或不存在
array.find
将为您找到数组中的特定项
例如
[1,2,3].includes(1) // returns true
[1,2,3].includes(4) // returns false
[1,2,3].find(i => i === 1) // returns 1
[1,2,3].find(i => i === 5) // returns undefined
我正在尝试创建具有以下功能的名为 addTrack 的方法:
- 接受轨道参数
- 使用曲目的 ID 属性 检查是否 当前歌曲处于播放列表曲目状态
如果id是新的,将歌曲添加到播放列表的末尾。
设置播放列表的新状态。
如果我使用代码 #1 而不是代码 #2 会有什么不同?
PlaylistTracks 在构造函数中定义如下:
playlistTracks: [{ name: 'name1', artist: 'artist1', album: 'album1', id: 1 },
{ name: 'name2', artist: 'artist2', album: 'album2', id: 2 },
]
代码 #1
addTrack(track){
if (this.state.playlistTracks.includes(this.props.track.id)) {return;}
else {this.state.playlistTracks.push(track);
this.setState({playlistTracks:this.state.playlistTracks});
}
}
代码 #2
addTrack(track) {
if (this.state.playlistTracks.find(savedTrack => savedTrack.id===track.id) {return;}
else {return this.state.playlistTracks.push(track);}
this.setState(playlistTracks:this.state.playlistTracks)}
array.includes
将 return true 或 false 如果值存在或不存在
array.find
将为您找到数组中的特定项
例如
[1,2,3].includes(1) // returns true
[1,2,3].includes(4) // returns false
[1,2,3].find(i => i === 1) // returns 1
[1,2,3].find(i => i === 5) // returns undefined