Javascript:根据键的值有条件地过滤 JSON?

Aus*_*rke 5 javascript api json object node.js

在检索这样的 JSON 之后:

"JSON": [
{
  "mySchool": "college",
  "myHome": "apartment",
  "myFavoriteSport": "soccer"
},
{
  "mySchool": "highschool",
  "myHome": "house",
  "myFavoriteSport": "hockey"
},
{
  "mySchool": "college",
  "myHome": "box",
  "myFavoriteSport": "soccer"
},
{
  "mySchool": "elementary",
  "myHome": "tent",
  "myFavoriteSport": "soccer"
}
]
Run Code Online (Sandbox Code Playgroud)

我如何有条件地过滤它,以便...如果soccermyFavoriteSport键的值,则返回包含该myFavoriteSport: soccer对的所有对象的数组?我确定我最终会pushing将该对象放入数组中,但我不太知道如何将其单独列出以便将其分配给一个变量。

我确定它会涉及某种类型的循环,但这是我第一次使用 JSON 和这种类型的对象,所以我有点不确定如何处理它。

Cer*_*nce 5

如果你想过滤,那么使用.filter- 只需检查myFavoriteSport属性是否为soccer

const input = {
  "JSON": [
    {
      "mySchool": "college",
      "myHome": "apartment",
      "myFavoriteSport": "soccer"
    },
    {
      "mySchool": "highschool",
      "myHome": "house",
      "myFavoriteSport": "hockey"
    },
    {
      "mySchool": "college",
      "myHome": "box",
      "myFavoriteSport": "soccer"
    },
    {
      "mySchool": "elementary",
      "myHome": "tent",
      "myFavoriteSport": "soccer"
    }
  ]
};
console.log(
  input.JSON.filter(({ myFavoriteSport }) => myFavoriteSport === 'soccer')
);
Run Code Online (Sandbox Code Playgroud)

另请注意,JSON 是一种以字符串格式表示对象的方法。(例如,

const myJSON = '[{"foo":"bar"},{"baz":"buzz"}]';
Run Code Online (Sandbox Code Playgroud)

)。如果您有实际的对象/数组,那么它不是 JSON 格式 - 它只是一个普通对象。最好将密钥命名为类似arrpersonArr类似的名称。不存在“JSON 对象”这样的东西