Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Из массива вытащить одинаковые элементы и записать в другой массив. (https://javascript.ru/forum/misc/59478-iz-massiva-vytashhit-odinakovye-ehlementy-i-zapisat-v-drugojj-massiv.html)

Ruslan_Berebnev 12.11.2015 18:25

Из массива вытащить одинаковые элементы и записать в другой массив.
 
Создаётся массив по событию. По этому же событию происходит выборка из ранее созданного массива, чтобы записать результат в другой массив, но на выходе всегда получается пустой массив. Почему?
//функция вытащит нужное значение массива и перезапишет его  
function groupArray(arr, val) {
    var object = [];
    for (var i = 0; i < arr.length; i++) {
      if (arr[i] !== val) continue;
      object.push(arr[i]);
    }
    return object;
  }

  var objects, deleteAll, getName, obj = [];
//по событию создаётся массив, а потом используется выборка для создания
//ещё одного массива с одинаковыми значениями
  deleteAll = function (e) {
    if (e.target.className !== 'delete-all') return;
    getName = e.target.parentElement.querySelector('.val-names').innerHTML;
    for (var i = 1; i <= getCookie('COUNT'); i++) obj.push(getCookie('ITEM_NAME_' + i));
    objects = groupArray(obj, getName);
    console.log(objects); // результат []
  }

  window.addEventListener('click', deleteAll);

рони 12.11.2015 18:56

Цитата:

Сообщение от Ruslan_Berebnev
getCookie('COUNT')

это число проверяли?

Ruslan_Berebnev 12.11.2015 19:05

Да. Это сётчик. Он правильный.

Ruslan_Berebnev 12.11.2015 19:06

.filter() тоже дал пустой массив. Не понимаю в чём дело. getName - строка, obj[i] - строка, строку со строкой сравниваю.

рони 12.11.2015 19:10

Ruslan_Berebnev,
нужен полноценный макет

Mess4me 12.11.2015 19:39

Ruslan_Berebnev, код без функций getCookie('COUNT') рабочий , так что проблема в этой функции
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>trigger demo</title>

</head>
<body>

<button class="delete-all">Button #1</button>
 <div class="val-names">ITEM_NAME_2</div>

<script>
    //функция вытащит нужное значение массива и перезапишет его
    function groupArray(arr, val) {
        var object = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] !== val) continue;
            object.push(arr[i]);
        }
        return object;
    }

    var objects, deleteAll, getName, obj = [];
    //по событию создаётся массив, а потом используется выборка для создания
    //ещё одного массива с одинаковыми значениями
    deleteAll = function (e) {
        if (e.target.className !== 'delete-all') return;
        getName = e.target.parentElement.querySelector('.val-names').innerHTML;
        for (var i = 1; i <= 3; i++) obj.push( 'ITEM_NAME_' + i);
        objects = groupArray(obj, getName);
        alert(objects);
    }

    window.addEventListener('click', deleteAll);

</script>

</body>
</html>

рони 12.11.2015 19:45

Mess4me,
а кнопочку посмотреть?
[HTML run][/HTML]

Mess4me 12.11.2015 19:46

А как? :-?

Mess4me 12.11.2015 19:47

Понял)

рони 12.11.2015 19:57

Mess4me,
:victory:


Часовой пояс GMT +3, время: 17:36.