过滤Javascript数组并仅返回具有填充键的对象
我在这里搜索了几个小时,到目前为止还没有找到正确的答案。如果答案已经出来了,我很抱歉 我试图过滤一个数组,只返回具有某个键和任意值的对象。值是否为无关紧要,只要该键不为空或null 阵列示例:过滤Javascript数组并仅返回具有填充键的对象,javascript,arrays,Javascript,Arrays,我在这里搜索了几个小时,到目前为止还没有找到正确的答案。如果答案已经出来了,我很抱歉 我试图过滤一个数组,只返回具有某个键和任意值的对象。值是否为无关紧要,只要该键不为空或null 阵列示例: [ { "title": "Song 1", "author": "Joe", "Album1": 2, "Album2": null, "Album3": 5 }, { "title": "Song 2", "author": "Jan
[
{
"title": "Song 1",
"author": "Joe",
"Album1": 2,
"Album2": null,
"Album3": 5
},
{
"title": "Song 2",
"author": "Jane",
"Album1": null,
"Album2": null,
"Album3": 8
},
{
"title": "Song 3",
"author": "Steve",
"Album1": 10,
"Album2": 1,
"Album3": null
}
]
我只想返回在Album1
中有值的对象(该值将是曲目)。我不在乎价值是什么,只要有价值就行。因此,在本例中,仅将以下内容返回到新数组:
[
{
"title": "Song 1",
"author": "Joe",
"Album1": 2,
"Album2": null,
"Album3": 5
},
{
"title": "Song 3",
"author": "Steve",
"Album1": 10,
"Album2": null,
"Album3": null
}
]
我试过几种不同的方法,每种都失败了。这是一个似乎应该有效,但却无法实现的方案:
getFilteredSongs (array, album) {
return songs
.filter(function (obj) {
return Object.keys(album).every(function (a) {
return obj[a] === true
})
})
}
getFilteredSongs(songsList, Album1)
我非常感谢任何帮助,以及对我的绿色技能的耐心,以及无法找到一个似乎应该存在的问题 您只需返回
Album1
属性-如果null
,结果数组将不包括在结果中:
const歌曲=[
{
“标题”:“歌曲1”,
“作者”:“乔”,
“专辑1”:2,
“Album2”:空,
“专辑3”:5
},
{
“标题”:“歌曲2”,
“作者”:“简”,
“Album1”:空,
“Album2”:空,
“专辑3”:8
},
{
“标题”:“第三首歌”,
“作者”:“史蒂夫”,
专辑1:10,
“专辑2”:1,
“Album3”:空
}
];
const filtered=songs.filter({Album1})=>Album1);
console.log(过滤)代码>以下内容将消除任何具有空值的相册
filteredSongs = songs.filter((cur) => cur.Album1 !== null);
如果Album1
可能是除undefined
/null
(例如0
)之外的错误值,您可以只检查undefined
/null
,如下所示:
const歌曲=[
{
“标题”:“歌曲1”,
“作者”:“乔”,
“专辑1”:2,
“Album2”:空,
“专辑3”:5
},
{
“标题”:“歌曲2”,
“作者”:“简”,
“Album1”:空,
“Album2”:空,
“专辑3”:8
},
{
“标题”:“第三首歌”,
“作者”:“史蒂夫”,
专辑1:10,
“专辑2”:1,
“Album3”:空
}
];
const filteredSongs=songs.filter({Album1})=>Album1!=null);//仅过滤出未定义/空值
console.log(过滤歌曲)代码>当没有任何值时,键所取的值是多少
。可以安全地假设它将null
?谢谢。第二个选择让我走上了我需要的道路。非常感谢。不知道为什么我在搜索中找不到:(。