【问题标题】:json comparison with in the objectjson与对象中的比较
【发布时间】:2016-04-18 12:10:28
【问题描述】:

我有示例 json 对象的格式如下..

var result =  [{"value":"S900_Aru","family":"S400"},
              {"value":"S500_Aru","family":"S400"},
              {"value":"2610_H","family":"A650"}]

如果您看到前两个 与同一个家庭有关,而第三个则属于其他 家庭 ...

我如何遍历这个完整的 json 对象,我需要提醒客户说这三个与同一个家庭无关......

有人可以帮忙解决这个问题吗? 非常感谢提前

【问题讨论】:

    标签: javascript jquery arrays angularjs json


    【解决方案1】:

    你可以使用Array.prototype.every():

    var test = result.every(function(item, index, array){
      return item.family === array[0].family;
    }); // true if all items in array have same family property set
    

    var result =  [{"value":"S900_Aru","family":"S400"},
                  {"value":"S500_Aru","family":"S400"},
                  {"value":"2610_H","family":"A650"}];
                  
    var test = result.every(function(item, index, array){
      return item.family === array[0].family;
    });
    
    alert(test);

    【讨论】:

    • @A.Wolff Enigma 期待像alert((test)?"Related to the same family":"Not related to the same family");这样的声明
    • @Thanga if(test){alert("Related to the same family"} else {alert("Not related to the same family");}。如果是的话,我在想这真的很明显
    【解决方案2】:

    一个带有比较的简单循环就可以了。

    for (var i= 1, first = result[0].family; i< result.length; i++) {
      if (result[i].family !== first) {
        alert('Family mismatch')
      }
    }
    

    【讨论】:

      【解决方案3】:

      你可以试试

      var jsonString = '[{"value":"S900_Aru","family":"S400"},{"value":"S500_Aru","family":"S400"},{"value":"2610_H","family":"A650"}]';
      var jsonData = $.parseJSON(jsonString);
      
      var valueArray = new Array();
      $.each(jsonData, function (index, value) {
          valueArray.push(value['value']);
          if ($.inArray(value['value'], valueArray)) {
              alert('Duplicate Item');
              return;
          } else {
              // Continue
          }
      });
      

      【讨论】:

        【解决方案4】:

        我将存储family 的第一个值并使用every 来检查数组的每个元素。

        value  = result[0].family;
        
        function isSameFamily(element) {
          return element.family == value;
        }
        
        a = result.every(isSameFamily);
        

        https://jsfiddle.net/ejd64es0/

        if(a){
         alert("Same family")
        }
        else{
          alert("Not Same family")
        }
        

        【讨论】:

          【解决方案5】:

          您可以使用两个 for 循环来检查每个对象与其他对象,并在两个系列不匹配时记录消息。

          for(var i=0;i<result.length-1;i++) {
              for(var j=1;j<result.length;j++) {
                  if(result[i].family !== result[j].family)
                      console.log("Families do not match");
              }
          }
          

          【讨论】:

            【解决方案6】:

            var result =  [{"value":"S900_Aru","family":"S400"},
                          {"value":"S500_Aru","family":"S400"},
                          {"value":"2610_H","family":"A650"}]
            
            var itemFamily = result[0].family;
            var differs = false;
            result.forEach(function(itm){ 
             if (itemFamily != itm.family) { 
               differs = true;
             } 
            });
            
            alert((differs)?"Not related to the same family":"Related to the same family");

            【讨论】:

              【解决方案7】:

              您可以检查每个元素与第一个元素并返回Array#every()的结果。

              var result = [{ "value": "S900_Aru", "family": "S400" }, { "value": "S500_Aru", "family": "S400" }, { "value": "2610_H", "family": "A650" }],
                  related = result.every(function (a, i, aa) {
                      return aa[0] === a;
                  });
              
              document.write(related);

              【讨论】:

                猜你喜欢
                • 2019-12-25
                • 1970-01-01
                • 2015-07-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-12-27
                • 2014-03-02
                • 1970-01-01
                相关资源
                最近更新 更多