【问题标题】:Looping on a JSON object to check if a given value exists循环 JSON 对象以检查给定值是否存在
【发布时间】:2018-11-27 07:51:44
【问题描述】:

这是我的 JSON 对象,我想知道在 Angular 6 中,如果上面存在例如 Tennis 的值,我们如何在键“名称”中搜索。

  {
  "id":2,
  "name":"Sports",
  "url":"/sports"
  "children":[
     {
        "id":1,
        "name":"Football"
     },
     {
        "id":2,
        "name":"Tennis"   
     },
     {
        "id":3,
        "name":"Soccer"
     }

}

谢谢。

【问题讨论】:

    标签: javascript json angular


    【解决方案1】:

    您可以使用array.some()来检查值是否存在,

    var result = yurObj.children.some(t=>t.name === "Tennis");
    

    演示

    var yourObj = {
      "id": 2,
      "name": "Sports",
      "url": "/sports",
      "children": [
        {
          "id": 1,
          "name": "Football"
        },
        {
          "id": 2,
          "name": "Tennis"
        },
        {
          "id": 3,
          "name": "Soccer"
        }
      ]
    };
    
    var result = yourObj.children.some(t=>t.name === "Tennis");
    console.log(result);

    【讨论】:

    • 如果我对我的 JSON 对象使用 JSON.stringify() 是否实用?
    • 你不需要用,看demo就行了
    • yourObj.children 未知结果在我的情况下是一个列表,我只能映射、过滤、foreach .. 管理列表的方法
    • 我的意思是 yourObj 就是你在上面粘贴的那个
    【解决方案2】:

    您可以使用以下数组过滤方法:

    const result = Object.children.filter(item => item.name === 'Tennis')
    

    结果数组将包含名称等于“网球”的所有子元素。

    希望这会有所帮助。 劳埃德

    【讨论】:

      【解决方案3】:

      使用lodash 非常简单。您可以使用findfilter 方法。 find 将为您提供特定值,而 filter 将返回匹配搜索条件的值集合。

      const result = _.find(yourObj, {name: 'Tennis'});

      如果您需要在对象的子对象中进行搜索,您也可以这样做:

      const result = _.find(yourObj, function(o) { return o.children.name === 'Tennis' });

      【讨论】:

        猜你喜欢
        • 2021-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-01
        • 2017-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多