Обработка списка
-
@Turutur спасибо, первый способ помог.
Хотя похоже больше на костыль.
Пытался сделать через arr.filter, но почему то не вышло
-
Все таки способ немного не подходит
делаю так:
forreach список:
получаю длину списка
удаляю forreach data со списка
получаю длину списка
разницу вывожу в переменную
вывожу результат - forreach data:количество упоминанийНо все равно в forrech data попадают элементы списка, которые уже были посчитаны, и в результаты попадают элементы с упоминанием 0
Временно сделал в средине после получения разницы, если она равна 0 то начинается следующая итерация, но все равно как то не то
-
function unique(arr) {
var result = [];nextInput:
for (var i = 0; i < arr.length; i++) {
var str = arr[i]; // для каждого элемента
for (var j = 0; j < result.length; j++) { // ищем, был ли он уже?
if (result[j] == str) continue nextInput; // если да, то следующий
}
result.push(str);
}return result;
}var strings = [
"собака",
"кошка",
"птица",
"кошка",
"птица",
"кошка",
"птица",
"собака"
];alert( unique(strings) );
-
Вот более менее простой способ решения проблемы на js
[[LIST]] = ['собака', 'кошка', 'птица', 'кошка', 'птица', 'кошка', 'птица', 'собака'] [[HASH]] = [[LIST]].reduce(function(hash, elem){ hash[elem] = (hash[elem] || 0) + 1; return hash }, {}) log(JSON.stringify([[HASH]]))
-
@support Чем является HASH в данном случае. Как его дальше обрабатывать?
-
@DrPrime Ассоциативный массив.Ключ - строка, значение - количество раз, которое встречается строка.
https://learn.javascript.ru/object
-
Есть еще идея - вместе с модулем "Список" сделать модуль для работы с ассоциативными массивами.
-
@support да, неплохо бы
-
@support я пока распарсил его костылями, так как нужно было отсеять по количеству упоминаний значения, счас буду разбираться как сделать это "как положено"