Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.07.2015, 17:03
Новичок на форуме
Отправить личное сообщение для Noin Посмотреть профиль Найти все сообщения от Noin
 
Регистрация: 18.07.2015
Сообщений: 2

Удаление элементов из массива
Добрый день!

Есть следующая ситуация:
При загрузке страницы получаем массив данных myData. (получаю так:
var myData = <?php echo json_encode($data, JSON_PRETTY_PRINT) ?>;
)

и есть функция:
function setFilters(oldData) {

    var i = 0;
    var newItems = oldData;

    if (document.getElementById("isFreeFilter").checked){
        for (i = (newItems.length - 1); i >= 0; i--) {
            if (newItems[i].isFree != '1') {
                newItems.splice(i, 1);
            }
        }
    }
}


html:
<input id="isFreeFilter" type="checkbox" name='chb1' value="1" onChange="setFilters(myData)">


Собственно проблема заключается в удалении через splice элементов массива newItems. Как только выполняется строчка
newItems.splice(i, 1);
- нужный элемент удаляется не только из массива newItems, но и из myData. Как такое вообще может быть и как это можно избежать?
Ответить с цитированием
  #2 (permalink)  
Старый 18.07.2015, 17:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,077

Noin,
создание дубликата массива
var newItems = oldData.slice();
Ответить с цитированием
  #3 (permalink)  
Старый 18.07.2015, 17:34
Новичок на форуме
Отправить личное сообщение для Noin Посмотреть профиль Найти все сообщения от Noin
 
Регистрация: 18.07.2015
Сообщений: 2

Сообщение от рони Посмотреть сообщение
Noin,
создание дубликата массива
var newItems = oldData.slice();
Спасибо.
Получается если делать просто
var newItems = oldData;
создаётся ссылка на исходный массив?
Ответить с цитированием
  #4 (permalink)  
Старый 18.07.2015, 17:37
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Noin,
да. В учебнике на этом сайте довольно подробно про это написано.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив из элементов другого массива, взятых в случайном порядке Basil_JS Общие вопросы Javascript 6 12.04.2015 13:07
Удаление одинаковых элементов массива Ваяс Events/DOM/Window 57 20.02.2014 15:31
Замена элементов массива элементами массива prostoix Javascript под браузер 4 24.10.2013 17:36
Вывод случайных элементов из массива в таблицу Narm0 Общие вопросы Javascript 10 06.08.2013 12:39
Определить количество отрицательных элементов массива Тип_1 Общие вопросы Javascript 3 25.06.2012 18:24