Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 23.12.2013, 13:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от danik.js
А что по твоему означает "второй массив" - часть первого?
Это обычное понятие "быть частью чего-либо"... Т.е. это не какое-то мое понятие... Это понятие вообще.

Например в первом массиве нет двух 2, как и двух 4... Т.о. второй массив ну никак не может быть частью первого.
Ответить с цитированием
  #12 (permalink)  
Старый 23.12.2013, 13:56
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от danik.js
Именно так функция и работает - игнорирует порядок и повторы.
Это-то понятно...
Ответить с цитированием
  #13 (permalink)  
Старый 23.12.2013, 14:07
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

ksa, тогда предлагаю такой вариант:
Сначала отсортировать a2, далее при переборе хранить найденный индекс совпадающего элемента в a1, сверять текущий элемент с предыдущим элементом, и если они равны, то искать дубль уже с сохраненного индекса, а не с начала.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #14 (permalink)  
Старый 23.12.2013, 14:08
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

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);

то же самое Определение длинны строки
Ответить с цитированием
  #15 (permalink)  
Старый 23.12.2013, 14:08
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от danik.js
тогда предлагаю такой вариант ...
Это пусть уже автор думает, что ему делать...
Ответить с цитированием
  #16 (permalink)  
Старый 23.12.2013, 14:11
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Poznakomlus Посмотреть сообщение
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);

то же самое Определение длинны строки
Твой вариант не пройдет, по описаным выше причинам...
Ответить с цитированием
  #17 (permalink)  
Старый 23.12.2013, 14:16
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от danik.js
Сначала отсортировать a2, далее при переборе хранить найденный индекс совпадающего элемента в a1, сверять текущий элемент с предыдущим элементом, и если они равны, то искать дубль уже с сохраненного индекса, а не с начала.
А как тебе такой вариант:
- переделать первый массив в объект (o[a[i]]=<количество_елементов>)
- пройтись по второму массиву проверяя и "минусуя" количество
- если проверка и декремент не выявил патологии - таки является частью.
Т.о. 1 проход по первому и 1 проход по второму - вроде не так уж и плохо получится...
Ответить с цитированием
  #18 (permalink)  
Старый 23.12.2013, 14:26
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Poznakomlus
мой пример является решением, этой задачи.
Нет.
Сообщение от Poznakomlus
Не кажется, что вы усложняете задачу не описанную Т.С.
Нет.

Т.к. массив
var a2 = [2, 4, 4, 2];

не является частью массива
var a1 = [1, 2, 3, 4, 5];
Ответить с цитированием
  #19 (permalink)  
Старый 23.12.2013, 14:32
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

что вы считаете частью массива?
не нашел у Т. С. такого
a2 [2, 3] ?
a3 [3, 2] ?
a4 [3] ?
массива a1 = [1, 2, 3, 4, 5];

Последний раз редактировалось Vlasenko Fedor, 23.12.2013 в 14:36.
Ответить с цитированием
  #20 (permalink)  
Старый 23.12.2013, 14:41
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Poznakomlus
что вы считаете частью массива?
Дабы не повторяться...
Перебор массива - вложенный цикл

Сообщение от Poznakomlus
не нашел у Т. С. такого
Ну не нашел - так не нашел...

Вот мой вариант на проверку именно части одного массива в другом

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;
};
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как подчинить себе цикл wreder jQuery 17 20.11.2013 22:17
Цикл завешивает страницу, помогите Romingood jQuery 5 19.10.2013 14:30
Нужен цикл для создания огромного массива apish Общие вопросы Javascript 2 20.09.2012 16:10
JS Перебор ассоциативного многомерного массива zbs2000 Events/DOM/Window 8 23.07.2012 01:23
Перебор массива объектов Триви jQuery 12 26.08.2011 09:22