javascript - 使用 .filter 在数组中搜索数组
问题描述
我想了解如何使用 .filter 方法在数组中搜索数组。我正在创建一个充满专辑对象的集合数组。在专辑对象中有一个名为tracks 的属性,它本身就是一个填充了track 对象的数组。
function addToCollection(title, artist, yearPublished, tracks) {
const album = {
title: title,
artist: artist,
yearPublished: yearPublished,
tracks: tracks,
}
collection.push(album);
return album;
} // end addToCollection
function addTrack(trackNumber, name, duration) {
const track = {
trackNumber: trackNumber,
name: name,
duration: duration
}
return track;
}
我正在编写一个搜索功能来返回满足搜索条件的某些专辑。以下代码行将返回一个数组,其中包含与传入参数中的 .artist 属性匹配的专辑对象。
function search(query) {
const foundArtist = collection.filter( x => x.artist === query.artist );
我的问题是如何使用 .filter 方法对每个专辑中的曲目数组进行排序,以找到单独的曲目名称或曲目持续时间。
即使 query.trackName 存在,以下代码也找不到轨道名称。
const foundTrackName = collection.filter( x => x.tracks.name === query.trackName);
而当我指定特定曲目时,它会返回整个专辑。
const foundTrackName = collection.filter( x => x.tracks[4].name === query.trackName);
解决方案
你也需要迭代tracks
。
const foundTrackName = collection.filter(({ tracks }) =>
tracks.some(({ name }) =>
name === query.trackName
)
);
推荐阅读
- c++ - 如何在 C++ 中打印动态数组我需要解释这个问题
- docker - 文件存在于 Singularity 容器中,但在执行时不会产生此类文件错误
- javascript - 合约部署后 Ganache 不更新账户余额
- c# - 侧边菜单的图像存储在哪里?
- php - 如何按日期顺序确定记录的编号
- uipath - 阻止用户与 UiPath 机器人交互
- amazon-web-services - 如何修复 AWS code-build apt-get update exit status 100 以使反应应用程序上传到 s3
- python - 将二维数组包装为元组
- html - 使表格内的元素包装其内容而不是拉伸整个页面
- scala - Scala 类型参数不符合方法 eval 的类型参数界限