Выбрать элементы с одного массива, которых нет в другом
Всем привет. Есть 2 массива:
[1, 2, 3, 4, 5] [0, 7, 1, 2, 3] во второй массив добавляются новые элементы, (второй массив, это первый, но сколько добавилось, на столько он сдвинулся) как найти новые добавленные элементы массива, в данном случае 0 и 7 (и из них сделать отдельный массив) ?? т.е. перебрать по сути надо каждый элемент первого |
Правильно я понял, что первый элемент первого массива обязательно присутствует во втором массиве?
var array1 = [1, 2, 3, 4, 5]; var array2 = [0, 7, 1, 2, 3]; var diff = array2.slice(0, array2.indexOf(array1[0])); alert(diff); |
Цитата:
спасибо за ответ. Не факт, что он присутствует :) если в первом массиве 10 элементов, и мне во второй пришло 10, то все 10 элементов второго массива сместились и совпадений не будет :) |
Это все бесконтрольно что-ли происходит? Почему нельзя сразу, при изменении array2 учитывать все что нужно?
|
Цитата:
|
Значит сервер формирует массив. А попросить его сформировать третий массив нельзя? Или просто индекс последнего нового элемента.
|
Цитата:
|
Ну тогда indexOf. Если indexOf == -1, то значит весь массив состоит из новых элементов. Забираем его. Если нужна именно копия, то делаем через slice(0, array.length).
|
Цитата:
|
desperado,
:write: вариант var array1 = [1, 2, 3, 4, 5], array2 = [0, 7, 1, 2, 3]; function foo(arr1, arr2) { var diff = []; for (var i = 0; i < arr2.length; i++) { if (arr1[i] != arr2[i]) { diff.push(arr2.shift()); i = 0 } } return diff } alert(foo(array1, array2)) |
Часовой пояс GMT +3, время: 04:34. |