Цитата:
Например в первом массиве нет двух 2, как и двух 4... Т.о. второй массив ну никак не может быть частью первого. |
Цитата:
|
ksa, тогда предлагаю такой вариант:
Сначала отсортировать a2, далее при переборе хранить найденный индекс совпадающего элемента в a1, сверять текущий элемент с предыдущим элементом, и если они равны, то искать дубль уже с сохраненного индекса, а не с начала. |
var a1 = [1, 2, 3, 4, 5]; var a2 = [2, 4, 4, 2]; var buf = {}, rez = false, i; for (i = 0; i < a2.length; i++) { buf[a2[i]] = true; } for (i = 0; i < a1.length; i++) { if (buf[a1[i]]) { rez = true; break; } } alert(rez); то же самое http://javascript.ru/forum/misc/4366...ny-stroki.html |
Цитата:
|
Цитата:
|
Цитата:
- переделать первый массив в объект (o[a[i]]=<количество_елементов>) - пройтись по второму массиву проверяя и "минусуя" количество - если проверка и декремент не выявил патологии - таки является частью. Т.о. 1 проход по первому и 1 проход по второму - вроде не так уж и плохо получится... :) |
Цитата:
Цитата:
Т.к. массив var a2 = [2, 4, 4, 2]; не является частью массива var a1 = [1, 2, 3, 4, 5]; |
что вы считаете частью массива?
не нашел у Т. С. такого a2 [2, 3] ? a3 [3, 2] ? a4 [3] ? массива a1 = [1, 2, 3, 4, 5]; |
Цитата:
http://javascript.ru/forum/misc/4383...tml#post288560 Цитата:
Вот мой вариант на проверку именно части одного массива в другом var a1 = [1, 2, 3, 4, 5]; var a2 = [2, 4, 4, 2]; alert(part(a1,a2)); a2 = [2, 4]; alert(part(a1,a2)); function part(Ar1,Ar2) { var o={}; for (var i=0; i<Ar1.length; i++) { o[Ar1[i]]=(o[Ar1[i]]||0)+1; }; for (i=0; i<Ar2.length; i++) { if (o[Ar2[i]]) { if (o[Ar2[i]]--==0) { return false; }; } else { return false; }; }; return true; }; |
Часовой пояс GMT +3, время: 20:48. |