Javascript.RU

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

Сообщение от desperado
нужно каждый элемент нового массива сравнить с каждым второго....новый ли он
Зачем каждый? Как только нашли повторяющийся, за ним последуют остальные повторяющиеся, разве не так?
А indexOf как раз и находит первый повторяющийся, если он есть.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #12 (permalink)  
Старый 21.02.2015, 03:06
Интересующийся
Посмотреть профиль Найти все сообщения от kotlov-net
 
Регистрация: 20.02.2015
Сообщений: 13

Вроде вот так можно, но не уверен
arr1=[1,2,30,4,5]
arr2=[9,80,1,2,30]

extract=function(oldArr, newArr){
 var i=0, ns="", oldArr=oldArr.join(), newArr=newArr.join()
 while(!new RegExp("^"+newArr.slice(i)).test(oldArr)) {ns+=newArr[i]; i++}

 return ns.split(",").filter(function(x){return x!==""})

}

alert(extract(arr1, arr2))



//>>>> [ '9', '80' ]

Вообще, по-моему, задача в общем случае, неразрешима. Неизвестно, какие данные придут в новый массив, они могут в любом подмножестве совпадать с исходными. Поэтому нет надежного шаблона для проверки.

Последний раз редактировалось kotlov-net, 21.02.2015 в 03:15.
Ответить с цитированием
  #13 (permalink)  
Старый 21.02.2015, 03:20
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

kotlov-net прав.
array1 = [1, 2, 3, 4, 5]
array2 = [1, 2, 3, 1, 2]

array1 = [1, 2, 3, 4, 5]
array2 = [1, 2, 3, 4, 5] //полностью сменился
И что будете делать?
__________________
29375, 35
Ответить с цитированием
  #14 (permalink)  
Старый 21.02.2015, 13:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

>второй массив, это первый, но сколько добавилось, на столько он сдвинулся
......
>если в первом массиве 10 элементов, и мне во второй пришло 10, то все 10 элементов второго массива сместились и совпадений не будет


Уже не первый, и значит вполне возможно, что логика вложенная в решение задачи неудачна, так как эффективность этой проверки будет убывать по мере сдвига второго массива. А можно словами описать задачу, которую вы хотите решить, и для которой потребовался этот поиск? Может быть как раз сервер сразу бы возвращал ответ, как говорил danik.js?

Последний раз редактировалось laimas, 21.02.2015 в 13:37.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jquery: выбрать 1,6,11,16... элементы SunYang jQuery 1 22.05.2013 16:34
Как выбрать li элементы из первого уровня меню TicTac Общие вопросы Javascript 9 02.05.2013 21:05
Выбрать элементы, в которые вложен элемент с id. Вадимчег jQuery 3 24.11.2012 10:38
Выбрать все элементы, имеющие id rockerror Events/DOM/Window 4 07.11.2011 15:04
Выбрать элементы где значение атрибута меньше или больше заданного Neokortex jQuery 5 03.10.2011 14:23