Цитата:
|
А я бы использовал indexOf:
var a = [1,2,3]; var b = [1,4,3]; for (var i=0; i<b.length; i += 1){ if(a.indexOf(b[i]) != -1){ alert("Удаляем,"+b[i]); } } indexOf реализация для массивов и строк можно взять тут А оптимизировать раньше времени, зло! Скрипт с легкостью можно переписать чтобы он оставлял нужные или собирал их в отдельный массив. |
Цитата:
|
в библиотеке underscore много функций для работы с массивами http://documentcloud.github.com/underscore/#arrays
может помогут? |
Цитата:
var a = [],b = []; for (var i=0; i<1000; i++) { a[i] = i; b[i] = i; } var time = new Date(); 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 }; rez_duplicat = duplicat(a,b); time_duplicat = new Date((new Date()).getTime()-time.getTime()).getTime(); time = new Date(); 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 } rez_test = test(a,b); time_test = new Date((new Date()).getTime()-time.getTime()).getTime(); alert("duplicat : " + rez_duplicat + " => time : " + time_duplicat + "\n" + "test : " + rez_test + " => time : " + time_test); |
ну вот(( твоя быстрее.( а как она работает?
|
Цитата:
|
Livaanderiamarum,
при длине массивов 1000 ваша функция обращаеться к массивам 500 тысяч раз моя всего 2 тысячи в этом и выигрыш по времени |
Цитата:
|
Цитата:
но в методе пузырька даже меньше итераций, чем здесь :Р Цитата:
|
Часовой пояс GMT +3, время: 04:08. |