Вот мой jsfiddle: https://jsfiddle.net/kpam8g79/9/
У меня есть функция findCommon:
function findCommon(ar1, ar2, ar3)
{
// Initialize starting indexes for ar1[], ar2[] and ar3[]
let i = 0, j = 0, k = 0;
// Iterate through three arrays while all arrays have elements
while (i < ar1.length && j < ar2.length && k < ar3.length)
{
// If x = y and y = z, print any of them and move ahead
// in all arrays
if (ar1[i] == ar2[j] && ar2[j] == ar3[k])
{ console.log(ar1[i]+" "); i++; j++; k++; }
// x < y
else if (ar1[i] < ar2[j])
i++;
// y < z
else if (ar2[j] < ar3[k])
j++;
// We reach here when x > y and z < y, i.e., z is smallest
else
k++;
}
}
Мой набор данных выглядит так:
const ar1 = [1, 2, 3, 6, 8];
Но когдаМой набор данных представляет собой массив объектов
const oAr1 = ar1.map(v => ({value: v, display: `value ${v}`}));
Я все еще хочу получить общие значения.
Я могу отобразить oAr1 в ar1 и вызвать функцию findCommon, но это может быть неэффективно.Я также могу изменить функцию findCommon, чтобы принимать массив объектов вместо массива чисел, но я хочу повторно использовать findCommon.Мне было интересно, могу ли я использовать функциональное программирование для составления двух функций, чтобы я мог повторно использовать findCommon.
Интересно, как это можно сделать ...