How to get the difference between two arrays of objects in JavaScript

前端 未结 18 1463
没有蜡笔的小新
没有蜡笔的小新 2020-11-22 04:45

I have two result sets like this:

// Result 1
[
    { value: \"0\", display: \"Jamsheer\" },
    { value: \"1\", display: \"Muhammed\" },
    { value: \"2\",         


        
18条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-11-22 05:13

    I think the @Cerbrus solution is spot on. I have implemented the same solution but extracted the repeated code into it's own function (DRY).

     function filterByDifference(array1, array2, compareField) {
      var onlyInA = differenceInFirstArray(array1, array2, compareField);
      var onlyInb = differenceInFirstArray(array2, array1, compareField);
      return onlyInA.concat(onlyInb);
    }
    
    function differenceInFirstArray(array1, array2, compareField) {
      return array1.filter(function (current) {
        return array2.filter(function (current_b) {
            return current_b[compareField] === current[compareField];
          }).length == 0;
      });
    }
    

提交回复
热议问题