Пересечение и разность двух массивов
Всем привет, помогите сделать скрипты для нахождения пересечения и разности двух массивов на JavaScript.
Пересечение двух массивов arr1 и arr2 - элементы, которые присутствуют в обоих массивах. Разность двух массивов arr1 и arr2 - элементы массива arr1, которых нет в массиве arr2. В результирующих массивах не должно быть одинаковых элементов, даже если во входных массивах есть одинаковые элементы. Застрял на этом пункте задания :( |
harold,
ваши попытки плиз?! |
Могу подсказать есть уже темка на форуме этом думаю поможет Вам http://javascript.ru/forum/misc/2473...massiva-2.html
|
Цитата:
function Intersec(arr1,arr2){ var idx = 0, arr3 = []; for (var i = 0; i < arr2.length; i++) { idx = arr1.indexOf(arr2[i]); if (idx >= 0) arr3.push(arr1[i]); } return arr3; } но некорректно ( |
harold,
почти у вас всё верно кроме 7 строки function Intersec(arr1,arr2){ var idx = 0, arr3 = []; for (var i = 0; i < arr2.length; i++) { idx = arr1.indexOf(arr2[i]); if (idx >= 0) arr3.push(arr2[i]); } return arr3; } alert(Intersec([1,7,2,8,5,12,45,67],[3,4,5,1,2])) |
harold,
7 строка подумать и будет функция разности |
Цитата:
function Intersection(A,B) { var M=A.length, N=B.length, C=[]; for (var i=0; i<M; i++) { var j=0, k=0; while (B[j]!==A[i] && j<N) j++; while (C[k]!==A[i] && k<C.length) k++; if (j!=N && k==C.length) C[C.length]=A[i]; } return C; } Цитата:
function Difference(A,B) { var M=A.length, N=B.length, C=[]; for (var i=0; i<M; i++) { var j=0, k=0; while (B[j]!==A[i] && j<N) j++; while (C[k]!==A[i] && k<C.length) k++; if (j==N && k==C.length) C[C.length]=A[i]; } return C; } |
Demath,
Дзен-трансгуманист, благодарю, разобрался что исправить. |
function someFnName(arr1,arr2){ /* * resultArr1 - общие элементы * resultArr2 - элементы отсутствующие в втором массиве */ var resultArr1 = [], resultArr2 = []; arr1.map(function(elem){ if( arr2.indexOf( elem ) >= 0 ){ resultArr1.push( elem ); } else resultArr2.push(elem); }); return { res1 : resultArr1, res2 : resultArr2 } }; |
|
Часовой пояс GMT +3, время: 04:15. |