Показать сообщение отдельно
  #25 (permalink)  
Старый 24.12.2013, 18:19
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Вариант №2 Поиск совладения значений массива в любом порядке в искомом массиве

var a1 = [1, 2, 1, 3, 4, 5, 1, 9];
var a2 = [1, 5];
var a3 = [5, 1]; 
var a4 = [5, 1, 1, 3, 7]; 
    
var comparing = function (a, b) {
	
	if (a.length < b.length) return false;
	var i, buf = {}, maxel =  b.length - 1;
	for (i = 0; i < a.length; i++) buf[a[i]] = (buf[a[i]] || 0) + 1;
	for (i = 0; ;) {
		if (!buf[b[i]]--) return false;
		if (i++ == maxel) return true;
	}
}

alert(comparing(a1, a2));
alert(comparing(a1, a3));
alert(comparing(a1, a4));

Здесь максимальная длина проверки a.length + b.length

Последний раз редактировалось Vlasenko Fedor, 25.12.2013 в 05:08.
Ответить с цитированием