Удалить и вернуть массив из удаленных элементов splice
Тут такой вопрос. Мне нужно удалить повторяющиеся элементы из массива и вывести массив из удаленных элементов в браузер. Получается что-то одно. Параллельно не получается.
Тут функция возвращает удаленные элементы function Dublicates(array) { var dubl = []; for (var i = 0; i < array.length; i++) { for (var j = i + 1; j < array.length; j++) { if (array[i][0] == array[j][0]) { // search for the same account numbers dubl = array.splice(j, 1); //массив из удаленных элементов }; }; }; return dubl; // возвращает массив из удаленных элементов } А если пишу так то удаляет элементы из массива function Dublicates(array) { var dubl = []; for (var i = 0; i < array.length; i++) { for (var j = i + 1; j < array.length; j++) { if (array[i][0] == array[j][0]) { // search for the same account numbers array.splice(j, 1); //удаляет }; }; }; return array; // удаляет } Никак понять не могу как лучше сделать эти два действия в функции. Подскажите пожалуйста:) |
А что нужно получить в результате: массив без дублей или массив, состоящий из дублей исходного?
|
Demath,
Есть массив аrray. Надо найти в колонке (array[i][0]) одинаковые элементы(дубли). Если таковы есть, их надо удалить из массива array(т.е. получить массив без дублей) И список удаленных вывести в браузер. т.е. Надо получить массив состоящий из дублей исходного. |
Много вариантов было.
Один из них.. функция удаляет из исходного массива дубли. Вторая соответственно уже не может найти дубли.. Т.е. непонятно как его сделать.. |
Цитата:
2. Могут ли повторяющиеся элементы встречаться более одного раза? 3. В случае, например, array = [[15,2,-5],[1,2,4],[15,0,1],[15,11,5]], что должна вернуть функция? |
Вложений: 1
Цитата:
Более одного раза - нет. Ну а по поводу третьего вопроса то вернет в консоле то что прикрепленном файле |
В первам случае он также удаляет элементы из массива как и во втором, функция возвращает массив удалённых элементов, при этом изначальный array изменяется.
|
array не меняется в первом случае..
|
А я говорю - меняется:
array = [[15,2,-5],[1,2,4],[15,0,1],[15,11,5]] function Dublicates(array) { var dubl = []; for (var i = 0; i < array.length; i++) { for (var j = i + 1; j < array.length; j++) { if (array[i][0] == array[j][0]) { // search for the same account numbers dubl = array.splice(j, 1); //массив из удаленных элементов }; }; }; return dubl; // возвращает массив из удаленных элементов } alert(array) alert( Dublicates(array) ) alert(array) Читаем про то, как работает splice. |
Просто когда я вызываю эту функцию для array то она конечно удаляет. Но когда я хочу вывести удаленные в браузер то вот тут не получается..
|
Часовой пояс GMT +3, время: 15:47. |