| 
	| 
	
	| 
		
	| 
			
			 
			
				12.01.2012, 04:56
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| bohdantheone, 
 Вариант...
 
function duplicat(b, c) {
    for (var d = [], e = {}, f = {}, a = 0; a < b.length; a++) e[b[a]] = !0;
    for (a = 0; a < c.length; a++) f[c[a]] = !0;
    for (var g in e) f[g] && d.push(g);
    return d
};
alert(duplicat([1,7,2,8,5,12,45,67],[3,4,5,1,2]))
 |  |  
	| 
		
	| 
			
			 
			
				12.01.2012, 05:03
			
			
			
		 |  
	| 
		
			
			| Профессор     |  | 
					Регистрация: 25.12.2011 
						Сообщений: 786
					 
		
 |  |  
	| 
	
 
	| Сообщение от рони   |  
	| bohdantheone, Вариант...
 
 
function duplicat(b, c) {
    for (var d = [], e = {}, f = {}, a = 0; a < b.length; a++) e[b[a]] = !0;
    for (a = 0; a < c.length; a++) f[c[a]] = !0;
    for (var g in e) f[g] && d.push(g);
    return d
};
alert(duplicat([1,7,2,8,5,12,45,67],[3,4,5,1,2]))
 |  
	
 твоя функция не сравнивает 2 массива и не находит равныене взирая на расположение элементов , ты не правильно понял что хотел ОП)
 
твоя функция даже не выдает результат РАВЕНСТВА или НЕ равенства) она выдает только общие найденные элементы) а это тут вообще не причем)
 
но код обфуксировал зачетно)))			 Последний раз редактировалось Livaanderiamarum, 12.01.2012 в 05:16.
 |  |  
	| 
		
	| 
			
			 
			
				12.01.2012, 05:05
			
			
			
		 |  
	| 
		
			
			| Профессор     |  | 
					Регистрация: 25.12.2011 
						Сообщений: 786
					 
		
 |  |  
	| 
/**
 * сравнивает 2 массива не учитывая порядок элементов
 * 
 * @param {Array}
 *            Первый массив
 * @param {Array}
 *            Второй массив
 * @return {Boolean}
 */
function test(arr, arr2){
	if(arr.length != arr2.length) return false
	var on = 0;
	for( var i = 0; i < arr.length; i++ ){
		for( var j = 0; j < arr2.length; j++ ){
			if(arr[i] === arr2[j]){
				on++
				break
			}
		}
	}
	return on==arr.length?true:false
}
//сравниваем раз
var arr = [ 'привет', 'зима', "нарядная" ];
var arr2 = [ 'нарядная', 'зима', 'привет' ];
alert(test(arr, arr2))
//сравниваем два
var arr = [ 'СТОЛ', 'зима', "нарядная" ];
var arr2 = [ 'нарядная', 'зима', 'привет' ];
alert(test(arr, arr2))
			 Последний раз редактировалось Livaanderiamarum, 12.01.2012 в 13:47.
 |  |  
	| 
		
	| 
			
			 
			
				12.01.2012, 05:05
			
			
			
		 |  
	| 
		
			|  | Модератор       |  | 
					Регистрация: 27.04.2010 
						Сообщений: 3,417
					 
		
 |  |  
	| Livaanderiamarum, а что она, по-твоему, делает? Если массив не пустой - совпадающие элементы есть) |  |  
	| 
		
	| 
			
			 
			
				12.01.2012, 05:13
			
			
			
		 |  
	| 
		
			
			| Профессор     |  | 
					Регистрация: 25.12.2011 
						Сообщений: 786
					 
		
 |  |  
	| 
	
 
	| Сообщение от trikadin   |  
	| Livaanderiamarum, а что она, по-твоему, делает? Если массив не пустой - совпадающие элементы есть) |  
	
 Его функция находит общие элементы) и выдает массив с ними)
 
А нужно сравнить массивы не взирая на порядок элементов)
 
его функция определит равны они или нет ТОЛЬКО если не будет ни одного совпадения и выдастся пустой массив), если же будит хоть одно, то что-то да выдастся)) и придется еще потом сравнивать длины массива выданного и того который срванивали)) если длины равны то массивы равны) |  |  
	| 
		
	| 
			
			 
			
				12.01.2012, 05:22
			
			
			
		 |  
	| 
		
			|  | Модератор       |  | 
					Регистрация: 27.04.2010 
						Сообщений: 3,417
					 
		
 |  |  
	| 
	
 
	| Сообщение от Livaanderiamarum |  
	| и придется еще потом сравнивать длины массива выданного и того который срванивали)) если длины равны то массивы равны) |  
	
 Зачем? Ему это не нужно.
 
	
 
	| Сообщение от bohdantheone |  
	| 1) размеры массивов могут отличаться - да |  
	
 |  |  
	| 
		
	| 
			
			 
			
				12.01.2012, 05:25
			
			
			
		 |  
	| 
		
			
			| Профессор     |  | 
					Регистрация: 25.12.2011 
						Сообщений: 786
					 
		
 |  |  
	| 
	
 
	| Сообщение от trikadin |  
	| Зачем? Ему это не нужно. |  
	
 Ну как это не нужно)! Не нужно было бы не создавал бы топик с такой просьбой))
 
Нет, размеры массивов не могут отличаться он же потом написал, иначе как они будут РАВНЫМИ, а  соответственно ни не будут ПОХОЖИ друг на друга, при том что "в задании" ему нужно найти похожие массивы)
 
логика  |  |  
	| 
		
	| 
			
			 
			
				12.01.2012, 06:14
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| Livaanderiamarum, 
 Сравнение двух массивов  не учитывая порядок  елементов))) за два прохода  
 
function duplicat(b, c) {
    for (var d = [], e = {},a = 0; a < b.length; a++) e[b[a]]? e[b[a]]++:e[b[a]]=1 ;
    for (a = 0; a < c.length; a++) e[c[a]] && d.push(c[a]) && e[c[a]]--;
    return d.length == b.length && c.length == b.length
};
alert(duplicat([1,1,3,4,5],[5,4,3,1,1]))
alert(duplicat([1,1,3,4,5],[5,4,3,1,7]))
 |  |  
	| 
		
	| 
			
			 
			
				12.01.2012, 06:20
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| P.S. если два массива одинаковой длинны --- отсортировать оба и сравнить элементы по порядку ...  |  |  
	| 
		
	| 
			
			 
			
				12.01.2012, 11:35
			
			
			
		 |  
	| 
		
			
			| Кандидат Javascript-наук       |  | 
					Регистрация: 19.10.2011 
						Сообщений: 124
					 
		
 |  |  
	| рони,вроде как все работает, спасибо
 |  |  |  |