如果我在
playlists.json
中有一系列对象
"playlists" : [
{
"id" : "1",
"owner_id" : "2",
"song_ids" : [
"8",
"32"
]
},
{
"id" : "2",
"owner_id" : "3",
"song_ids" : [
"6",
"8",
"11"
]
},
{
"id" : "3",
"owner_id" : "7",
"song_ids" : [
"7",
"12",
"13",
"16",
"2"
]
}
]
在节点中,我在文件中读取了这样的内容:
const data = JSON.parse(fs.readFileSync('playlists.json'));
我想编写一个可以搜索
.filter()
并将结果变为新数组的函数,从而删除了已测试的条目。
当然,我们可以这样访问索引:
id
如何编写
playlists[0].id);
来测试某个特定的.filter()
,即生成一个具有值的新数组? (突变)我在下面写了一些代码,但这是错误的。
id
新阵列const someId = "2"
const result = playlists.filter(playlist => playlist.id !== someId)
将包含:
result
您使用的过滤器罚款,但是,您从JSON对象中选择了键。 以下是一个例子。
"playlists" : [
{
"id" : "1",
"owner_id" : "2",
"song_ids" : [
"8",
"32"
]
},
{
"id" : "3",
"owner_id" : "7",
"song_ids" : [
"7",
"12",
"13",
"16",
"2"
]
}
]
经过一些检查。我需要使用带有播放列表的父对象引用来实现正确的结果:
const jsonFile = {
"playlists" : [
{
"id" : "1",
"owner_id" : "2",
"song_ids" : [
"8",
"32"
]
},
{
"id" : "2",
"owner_id" : "3",
"song_ids" : [
"6",
"8",
"11"
]
},
{
"id" : "3",
"owner_id" : "7",
"song_ids" : [
"7",
"12",
"13",
"16",
"2"
]
}
]
}
const someId = 2
const result = jsonFile.playlists.filter(playlist => playlist.id !== someId)
console.log(result)
您的.filter()函数是正确的! 这是正确过滤输入和更新播放列表的方法。
const someId = "2";
const result = data.playlists.filter(playlist => playlist.id !== someId)
console.log(result);