Цитата:
Например в первом массиве нет двух 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, время: 19:31. |