24.05.2013, 16:47
|
|
Интересующийся
|
|
Регистрация: 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; // удаляет
}
Никак понять не могу как лучше сделать эти два действия в функции. Подскажите пожалуйста
|
|
25.05.2013, 17:13
|
|
Профессор
|
|
Регистрация: 22.06.2012
Сообщений: 168
|
|
А что нужно получить в результате: массив без дублей или массив, состоящий из дублей исходного?
|
|
25.05.2013, 18:06
|
|
Интересующийся
|
|
Регистрация: 01.05.2013
Сообщений: 21
|
|
Demath,
Есть массив аrray. Надо найти в колонке (array[i][0]) одинаковые элементы(дубли). Если таковы есть, их надо удалить из массива array(т.е. получить массив без дублей)
И список удаленных вывести в браузер.
т.е. Надо получить массив состоящий из дублей исходного.
|
|
25.05.2013, 18:08
|
|
Интересующийся
|
|
Регистрация: 01.05.2013
Сообщений: 21
|
|
Много вариантов было.
Один из них.. функция удаляет из исходного массива дубли. Вторая соответственно уже не может найти дубли.. Т.е. непонятно как его сделать..
|
|
25.05.2013, 21:55
|
|
Профессор
|
|
Регистрация: 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]], что должна вернуть функция?
|
|
26.05.2013, 02:44
|
|
Интересующийся
|
|
Регистрация: 01.05.2013
Сообщений: 21
|
|
Сообщение от Demath
|
1. Что именно удалить: только сам повторяющийся элемент array[i][0] или всю строку, его содержащую?
2. Могут ли повторяющиеся элементы встречаться более одного раза?
3. В случае, например, array = [[15,2,-5],[1,2,4],[15,0,1],[15,11,5]], что должна вернуть функция?
|
Удалить надо всю строку.
Более одного раза - нет.
Ну а по поводу третьего вопроса то вернет в консоле то что прикрепленном файле
|
|
26.05.2013, 13:08
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,577
|
|
В первам случае он также удаляет элементы из массива как и во втором, функция возвращает массив удалённых элементов, при этом изначальный array изменяется.
__________________
29375, 35
|
|
26.05.2013, 15:44
|
|
Интересующийся
|
|
Регистрация: 01.05.2013
Сообщений: 21
|
|
array не меняется в первом случае..
|
|
26.05.2013, 15:52
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,577
|
|
А я говорю - меняется:
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
|
|
26.05.2013, 17:33
|
|
Интересующийся
|
|
Регистрация: 01.05.2013
Сообщений: 21
|
|
Просто когда я вызываю эту функцию для array то она конечно удаляет. Но когда я хочу вывести удаленные в браузер то вот тут не получается..
|
|
|
|