Пересечение и разность двух массивов
Всем привет, помогите сделать скрипты для нахождения пересечения и разности двух массивов на 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, время: 19:32. |