gpt4 book ai didi

javascript - 过滤 Javascript 数组并仅返回具有填充键的对象

转载 作者:行者123 更新时间:2023-11-30 14:08:13 25 4
gpt4 key购买 nike

我已经在这里搜索了几个小时,但到目前为止还没有找到正确的答案。如果答案已经存在,我深表歉意。

我正在尝试过滤数组并仅返回具有特定键和任意值的对象。值是什么并不重要,只要该键不为空或 null 即可。

数组示例:

[
{
"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 songs = [
{
"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
}
];

const filtered = songs.filter(({ Album1 }) => Album1);
console.log(filtered);

或者,如果您愿意,无需解构:

const filtered = songs.filter(song => song.Album1);

或者,如果您使用 Album1string 键调用 getFilteredSongs:

const songs = [
{
"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
}
];
const getFilteredSongs = (songs, album) => songs.filter(song => song[album]);
console.log(getFilteredSongs(songs, 'Album1'));

关于javascript - 过滤 Javascript 数组并仅返回具有填充键的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54975487/

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