Собственно, например есть два массива:
[1, 2, 5, 9, 3] & [1, 5, 9]
Ввозможно, ли это реализовать только средствами нового и модного ES next?
И если возможно, то какова цена таких вычислений (сложность).
Сделать это лишь средствами "классического" js - нет проблем :)
Kot Matpockuh, Никита Егоров, можно сделать O(n), но с изменением входящих массивов.
Т.е. если оригиналы нужно сохранить, придется сделать копию данных (тоже O(n)) и курочить уже ее.
тыц
/* destructively finds the intersection of
* two arrays in a simple fashion.
*
* PARAMS
* a - first array, must already be sorted
* b - second array, must already be sorted
*
* NOTES
* State of input arrays is undefined when
* the function returns. They should be
* (prolly) be dumped.
*
* Should have O(n) operations, where n is
* n = MIN(a.length, b.length)
*/
function intersection_destructive(a, b)
{
var result = [];
while( a.length > 0 && b.length > 0 )
{
if (a[0] < b[0] ){ a.shift(); }
else if (a[0] > b[0] ){ b.shift(); }
else /* they're equal */
{
result.push(a.shift());
b.shift();
}
}
return result;
}
Kot Matpockuh, если у вас эти массивы не по стотыщмильйонов элементов, то можно не париться.
А если большие, то есть смысл набросать разные варианты, собрать тестовые массивы и погонять на jsperf причем еще и в разных браузерах.