Цитата:
А indexOf как раз и находит первый повторяющийся, если он есть. |
Вроде вот так можно, но не уверен:)
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 прав.
array1 = [1, 2, 3, 4, 5] array2 = [1, 2, 3, 1, 2] array1 = [1, 2, 3, 4, 5] array2 = [1, 2, 3, 4, 5] //полностью сменилсяИ что будете делать? |
>второй массив, это первый, но сколько добавилось, на столько он сдвинулся
...... >если в первом массиве 10 элементов, и мне во второй пришло 10, то все 10 элементов второго массива сместились и совпадений не будет Уже не первый, и значит вполне возможно, что логика вложенная в решение задачи неудачна, так как эффективность этой проверки будет убывать по мере сдвига второго массива. А можно словами описать задачу, которую вы хотите решить, и для которой потребовался этот поиск? Может быть как раз сервер сразу бы возвращал ответ, как говорил danik.js? |
Часовой пояс GMT +3, время: 09:55. |