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

标签 javascript node.js json api object

<分区>

在检索到这样的 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"
}
]

我如何有条件地过滤它以便...如果 soccermyFavoriteSport 键的值,则返回包含 myFavoriteSport 的所有对象的数组: 足球 一对?我确定最后我会对象放入数组中,但我不太清楚如何将它挑出来以便我可以将它分配给一个变量。

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

最佳答案

如果要过滤,则使用 .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')
);

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

const myJSON = '[{"foo":"bar"},{"baz":"buzz"}]';

)。如果你有实际的对象/数组,那么它不是 JSON 格式——它只是一个普通对象。最好将 key 命名为 arrpersonArr 或类似的名称。 There's no such thing as a "JSON Object"

关于Javascript:根据键的值有条件地过滤 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788467/

相关文章:

javascript - 在 javascript 中,为什么在重置函数原型(prototype)后也需要重置函数原型(prototype)构造函数?

javascript - 从json数组中查找满足条件的特定元素的值

javascript - AngularJS - 在两个容器内滚动 -anchorScroll

json - 如何在启用 pretty-print 的情况下对 JsonMarshaller 进行单元测试?

jquery - 将jquery数据表数据转换为json

javascript - 在 Javascript 中对以下字符串进行子字符串化的最简单方法

php - 相同的二进制文件产生不同的 md5

javascript - 在 JavaScript 中有效地计算对象的键/属性的数量

node.js - 如何为嵌套在多个数组和对象中的对象显示 forEach

c++ - 为什么 QJsonValue::toDouble 中有精度损失?