Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.05.2013, 16:47
Аватар для Paulyyy
Интересующийся
Отправить личное сообщение для Paulyyy Посмотреть профиль Найти все сообщения от Paulyyy
 
Регистрация: 01.05.2013
Сообщений: 21

Удалить и вернуть массив из удаленных элементов 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; // удаляет
        }

Никак понять не могу как лучше сделать эти два действия в функции. Подскажите пожалуйста
Ответить с цитированием
  #2 (permalink)  
Старый 25.05.2013, 17:13
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

А что нужно получить в результате: массив без дублей или массив, состоящий из дублей исходного?
Ответить с цитированием
  #3 (permalink)  
Старый 25.05.2013, 18:06
Аватар для Paulyyy
Интересующийся
Отправить личное сообщение для Paulyyy Посмотреть профиль Найти все сообщения от Paulyyy
 
Регистрация: 01.05.2013
Сообщений: 21

Demath,

Есть массив аrray. Надо найти в колонке (array[i][0]) одинаковые элементы(дубли). Если таковы есть, их надо удалить из массива array(т.е. получить массив без дублей)

И список удаленных вывести в браузер.
т.е. Надо получить массив состоящий из дублей исходного.
Ответить с цитированием
  #4 (permalink)  
Старый 25.05.2013, 18:08
Аватар для Paulyyy
Интересующийся
Отправить личное сообщение для Paulyyy Посмотреть профиль Найти все сообщения от Paulyyy
 
Регистрация: 01.05.2013
Сообщений: 21

Много вариантов было.
Один из них.. функция удаляет из исходного массива дубли. Вторая соответственно уже не может найти дубли.. Т.е. непонятно как его сделать..
Ответить с цитированием
  #5 (permalink)  
Старый 25.05.2013, 21:55
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Сообщение от Paulyyy
Есть массив аrray. Надо найти в колонке (array[i][0]) одинаковые элементы(дубли). Если таковы есть, их надо удалить из массива array(т.е. получить массив без дублей)
1. Что именно удалить: только сам повторяющийся элемент array[i][0] или всю строку, его содержащую?

2. Могут ли повторяющиеся элементы встречаться более одного раза?

3. В случае, например, array = [[15,2,-5],[1,2,4],[15,0,1],[15,11,5]], что должна вернуть функция?
Ответить с цитированием
  #6 (permalink)  
Старый 26.05.2013, 02:44
Аватар для Paulyyy
Интересующийся
Отправить личное сообщение для Paulyyy Посмотреть профиль Найти все сообщения от Paulyyy
 
Регистрация: 01.05.2013
Сообщений: 21

Сообщение от Demath Посмотреть сообщение
1. Что именно удалить: только сам повторяющийся элемент array[i][0] или всю строку, его содержащую?

2. Могут ли повторяющиеся элементы встречаться более одного раза?

3. В случае, например, array = [[15,2,-5],[1,2,4],[15,0,1],[15,11,5]], что должна вернуть функция?
Удалить надо всю строку.

Более одного раза - нет.

Ну а по поводу третьего вопроса то вернет в консоле то что прикрепленном файле
Изображения:
Тип файла: jpg array.jpg (7.4 Кб, 13 просмотров)
Ответить с цитированием
  #7 (permalink)  
Старый 26.05.2013, 13:08
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,680

В первам случае он также удаляет элементы из массива как и во втором, функция возвращает массив удалённых элементов, при этом изначальный array изменяется.
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 26.05.2013, 15:44
Аватар для Paulyyy
Интересующийся
Отправить личное сообщение для Paulyyy Посмотреть профиль Найти все сообщения от Paulyyy
 
Регистрация: 01.05.2013
Сообщений: 21

array не меняется в первом случае..
Ответить с цитированием
  #9 (permalink)  
Старый 26.05.2013, 15:52
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,680

А я говорю - меняется:
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.
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 26.05.2013, 17:33
Аватар для Paulyyy
Интересующийся
Отправить личное сообщение для Paulyyy Посмотреть профиль Найти все сообщения от Paulyyy
 
Регистрация: 01.05.2013
Сообщений: 21

Просто когда я вызываю эту функцию для array то она конечно удаляет. Но когда я хочу вывести удаленные в браузер то вот тут не получается..
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить класс всех дочерних элементов? Jeremen Events/DOM/Window 8 01.09.2012 20:43
Упорядочить заданный числовой массив X (M) в порядке убывания значений его элементов. Drimmer Серверные языки и технологии 0 02.07.2012 18:22
как найти и удалить массив из массива? FRIE Общие вопросы Javascript 8 14.03.2011 15:48
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30
Как удалить массив? SunYang Общие вопросы Javascript 14 05.02.2010 14:31