I want to find the common elements of multiple array of objects based on a common property. In addition, if an element appears more than once, I want the resulting array to reflect the number of times it occurs in all the arrays.
I tried the following:
var arr = [
    [
        { name: 'kiwi', value: 12 },
        { name: 'apple', value: 5 },
        { name: 'apple', value: 12 },
        { name: 'pizza', value: 33 },
        { name: 'pizza', value: 24 },
        { name: 'fish', value: 5 },
        { name: 'milk', value: 5 },
        { name: 'banana', value: 7 },
        { name: 'orange', value: 11 },
    ],
    [
        { name: 'taco', value: 23 },
        { name: 'pizza', value: 78 },
        { name: 'apple', value: 12 },
        { name: 'pizza', value: 33 },
        { name: 'pizza', value: 24 },
        { name: 'fish', value: 5 },
        { name: 'pie', value: 1 },
        { name: 'cake', value: 3 },
        { name: 'banana', value: 7 },
        { name: 'beef', value: 123 },
        { name: 'lime', value: 72 },
        { name: 'pizza', value: 34 },
    ],
    [
        { name: 'apple', value: 12 },
        { name: 'pizza', value: 33 },
        { name: 'pizza', value: 24 },
        { name: 'pizza', value: 23 },
        { name: 'fish', value: 5 },
        { name: 'banana', value: 7 },
        { name: 'banana', value: 77 },
    ]
];
function findArraysWithCommonName(arr) {
  let arrays = [...arr];
  var result = arrays.shift().reduce(function(res, v) {
    if (arrays.every(function(a) {
        return (a.filter(function(e) {
          return e.name === v.name
        }).length > 0);
      })) res.push(v);
    return res;
  }, []);
  return result;
}
console.log(findArraysWithCommonName(arr))
The result I got is:
[
{name: "apple", value: 5},
{name: "apple", value: 12},
{name: "pizza", value: 33},
{name: "pizza", value: 24},
{name: "fish", value: 5},
{name: "banana", value: 7}
]
I expect the output to be:
[
{name: "apple", value: 12},
{name: "pizza", value: 33},
{name: "pizza", value: 24},
{name: "fish", value: 5},
{name: "banana", value: 7}
]
or
[
{name: "apple", value: 5},
{name: "pizza", value: 33},
{name: "pizza", value: 24},
{name: "fish", value: 5},
{name: "banana", value: 7}
]
    
{name: "apple", value: 5}as a possible output?{name: "apple", value: 5}only occurs once. (or, why isn't{name: "apple", value: 12}present in the second possible output array?{name: "apple", value: 12}occurs in every array)appleobject in each array is, at most, 1, whereas for pizza, that number is 2