20.06.2013, 19:13
|
Новичок на форуме
|
|
Регистрация: 20.06.2013
Сообщений: 8
|
|
Пересечение и разность двух массивов
Всем привет, помогите сделать скрипты для нахождения пересечения и разности двух массивов на JavaScript.
Пересечение двух массивов arr1 и arr2 - элементы, которые присутствуют в обоих массивах.
Разность двух массивов arr1 и arr2 - элементы массива arr1, которых нет в массиве arr2.
В результирующих массивах не должно быть одинаковых элементов, даже если во входных массивах есть одинаковые элементы.
Застрял на этом пункте задания
|
|
20.06.2013, 19:51
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,120
|
|
harold,
ваши попытки плиз?!
|
|
20.06.2013, 20:04
|
Интересующийся
|
|
Регистрация: 14.06.2013
Сообщений: 29
|
|
Могу подсказать есть уже темка на форуме этом думаю поможет Вам Сравнить два массива
|
|
20.06.2013, 20:09
|
Новичок на форуме
|
|
Регистрация: 20.06.2013
Сообщений: 8
|
|
Сообщение от рони
|
ваши попытки плиз?!
|
с пересечением что-то получилось
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;
}
но некорректно (
|
|
20.06.2013, 20:18
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,120
|
|
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]))
|
|
20.06.2013, 20:21
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,120
|
|
harold,
7 строка подумать и будет функция разности
|
|
20.06.2013, 20:32
|
|
Профессор
|
|
Регистрация: 22.06.2012
Сообщений: 168
|
|
Сообщение от harold
|
Пересечение двух массивов arr1 и arr2 - элементы, которые присутствуют в обоих массивах.
В результирующих массивах не должно быть одинаковых элементов, даже если во входных массивах есть одинаковые элементы.
Застрял на этом пункте задания
|
Вот не самый эффективный вариант, но с учётом дублей и кроссбраузерно
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;
}
Сообщение от harold
|
Разность двух массивов arr1 и arr2 - элементы массива arr1, которых нет в массиве arr2.
|
Аналогично пересечению, различие в коде только в одном символе
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, 19.12.2013 в 05:50.
|
|
20.06.2013, 21:57
|
Новичок на форуме
|
|
Регистрация: 20.06.2013
Сообщений: 8
|
|
Demath,
Дзен-трансгуманист,
благодарю, разобрался что исправить.
|
|
18.12.2013, 02:39
|
Новичок на форуме
|
|
Регистрация: 07.04.2012
Сообщений: 6
|
|
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
}
};
Последний раз редактировалось kletchatii, 18.12.2013 в 02:49.
|
|
18.12.2013, 21:41
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Последний раз редактировалось nerv_, 18.12.2013 в 21:46.
|
|
|
|