【问题标题】:Find if a JSON Value contains certain text查找 JSON 值是否包含某些文本
【发布时间】:2018-03-25 04:11:36
【问题描述】:

我不确定这是否可能,因为我在这方面没有找到任何东西.. 我正在处理一个 JSON 对象..

{"name": "zack",
 "message": "hello",
 "time": "US 15:00:00"},

{"name": "zack",
 "message": "hello",
 "time": "US 00:00:00"}

有没有办法选择只包含“15:00:00”部分的时间属性?

感谢您的帮助

【问题讨论】:

  • 你能更清楚你的意思吗?选择是什么意思?

标签: javascript json object key


【解决方案1】:

据我了解,如果您解析 JSON,您将拥有一个对象数组。所以你可以利用filter函数过滤掉那些不符合你在过滤函数中传递的条件的元素:

var parsedJson = [{"name": "zack",
 "message": "hello",
 "time": "US 15:00:00"},{"name": "zack",
 "message": "hello",
 "time": "US 00:00:00"}];
 
 var result = parsedJson.filter(item=>item.time === "US 15:00:00");
 
 console.log(result);
 

【讨论】:

    【解决方案2】:

    您可以使用filter函数对数组进行过滤,并可以使用indexOf检查time字段是否包含15:00:00

    例如:

    var json = [{
        "name": "zack",
        "message": "hello",
        "time": "US 15:00:00"
      },
    
      {
        "name": "zack",
        "message": "hello",
        "time": "US 00:00:00"
      }
    ];
    
    
     var resultObj = json.filter(item=>item.time.indexOf("15:00:00") !== -1);
     console.log(resultObj);
    

    【讨论】:

      【解决方案3】:
      var arr = [{
          "name": "zack",
          "message": "hello",
          "time": "US 15:00:00"
      }, {
          "name": "zack",
          "message": "hello",
          "time": "US 00:00:00"
      }]
      
      for (var i = 0; i < arr.length; i++) {
          var time = (arr[i].time.split('US '))[1];
          console.log(time);
      }
      

      【讨论】:

        【解决方案4】:

        您可以使用 array#filter 函数。它将返回一个具有匹配元素的新数组。如果新数组的长度为 0 则没有找到匹配项

        var myJson = [{
            "name": "zack",
            "message": "hello",
            "time": "US 15:00:00"
          },
        
          {
            "name": "zack",
            "message": "hello",
            "time": "US 00:00:00"
          }
        ]
        
        var m = myJson.filter(function(item) {
          return item.time === "US 15:00:00"
        
        })
        
        console.log(m)

        findIndex 也可用于查找它是否包含该值。如果值为 -1,则表示 json 数组不包含任何符合条件的对象

        var myJson = [{
            "name": "zack",
            "message": "hello",
            "time": "US 15:00:00"
          },
        
          {
            "name": "zack",
            "message": "hello",
            "time": "US 00:00:00"
          }
        ]
        
        var m = myJson.findIndex(function(item) {
          return item.time === "US 15:00:00"
        
        });
        console.log(m)

        【讨论】:

        • 作者想像mysql LIKE 运算符一样过滤,而你的答案包含===
        猜你喜欢
        • 2023-03-16
        • 2013-12-13
        • 2018-06-17
        • 2015-01-31
        • 1970-01-01
        • 2013-07-16
        • 2012-11-08
        • 1970-01-01
        • 2015-06-30
        相关资源
        最近更新 更多