如何使用array .filter()在对象的json数组中搜索键值

问题描述 投票:0回答:3

如果我在

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" ] } ]
javascript node.js json
3个回答
3
投票

经过一些检查。我需要使用带有播放列表的父对象引用来实现正确的结果:
 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)

0
投票

您的.filter()函数是正确的! 这是正确过滤输入和更新播放列表的方法。

0
投票

const someId = "2"; const result = data.playlists.filter(playlist => playlist.id !== someId) console.log(result);

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.