| 
	| 
	
	| 
		
	| 
			
			 
			
				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,150
					 
		
 |  |  
	| 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,150
					 
		
 |  |  
	| 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,150
					 
		
 |  |  
	| 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.
 |  |  |  |