Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.04.2022, 10:40
Кандидат Javascript-наук
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 145

Как удалить дубликаты не зависимо от регистра букв?
Есть список [[LIST_WITH_FILE_CONTENT]] в котором нужно удалить дубли независимо от регистра букв. Список кстати содержит более 100 строк.

Пербором не получается, так как если вот так:
Пример переменной со списком [[LIST_WITH_FILE_CONTENT]] :
Код:
Book
BOOK
т. к. Book не равно BOOK - не удалит, из за разного регистра.

Я писал JS который удаляет из списка [[LIST_WITH_FILE_CONTENT]] все строки содержащие элемент из списка [[BLACK_LIST]]
независимо от регистра букв. Подскажите, как удалить дубли из списка [[LIST_WITH_FILE_CONTENT]] независимо от регистра букв, хочу переделать этот JS-код (см. ниже)?

JS-код:
[[LIST_WITH_FILE_CONTENT]] = [[LIST_WITH_FILE_CONTENT]].filter(function(line){
  return [[BLACK_LIST]].every(function(forbiddenWord) {
    return line.toLowerCase().indexOf(forbiddenWord.toLowerCase()) === -1;
  });
});
Ответить с цитированием
  #2 (permalink)  
Старый 11.04.2022, 10:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

mik888em,
набросай строк 20 LIST_WITH_FILE_CONTENT
Ответить с цитированием
  #3 (permalink)  
Старый 11.04.2022, 10:51
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от mik888em
Есть список [[LIST_WITH_FILE_CONTENT]] в котором нужно удалить дубли независимо от регистра букв.
Как вариант...
let a = ['Book', 'BOOK']
const o = {}
a = a.filter(el => {
	el = el.toLowerCase()
	if (o[el]) return false
	o[el] = true
	return true
})
alert(a)
Ответить с цитированием
  #4 (permalink)  
Старый 11.04.2022, 11:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

ksa,
Ответить с цитированием
  #5 (permalink)  
Старый 11.04.2022, 17:46
Кандидат Javascript-наук
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 145

Сообщение от рони Посмотреть сообщение
ksa,

И кстати, забыл указать что каждая строка это целое предложение, то есть нужно очистить список от дубликатов строк независимо от регистра букв в преложении в строках.
Написал, но код почему-то удаляет лишние строки, не пойму где ошибка:
const list = [[LIST_WITH_FILE_CONTENT]];

const uniqueList = list.filter((word, index) => {
  const regexp = new RegExp(word, 'i');
 
  for (let i = 0; i < list.length; ++i) {
    if (!regexp.test(list[i])) continue;
   
    if (i === index) return true;
     
    return false;
  }
});

[[LIST_WITH_FILE_CONTENT]]=uniqueList;
Ответить с цитированием
  #6 (permalink)  
Старый 11.04.2022, 17:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

mik888em,
можно нормальные примеры, без [[]]] с возможностью проверить результат?
алгоритм вам показал ksa, пост #3.

вариант оформления макета можно посмотреть тут


Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #7 (permalink)  
Старый 11.04.2022, 18:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

mik888em,
<script>
        let text = `
        И кстати, забыл указать,
        что каждая строка это целое предложение,
        то есть нужно очистить список от дубликатов строк,
        то есть НУЖНО ОЧИСТИТЬ список от дубликатов строк,
        ЧТО КАЖДАЯ строка это целое предложение,
        независимо от регистра букв в преложении в строках.
        И кстати, забыл указать,`;
        let redo = new Set();
        let regStr = /.+(\n|$)/mg;
        function replace(str) {
            return redo.has(str.trim().toLowerCase()) ? '' : (redo.add(str.trim().toLowerCase()), str);
        }
        text = text.replace(regStr, replace);
        document.write(`<pre>${text}</pre>`)
    </script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить созданную куку? DivMan Events/DOM/Window 1 22.11.2016 08:31
Как удалить слово без учета регистра из строки veltony Общие вопросы Javascript 4 12.09.2016 10:16
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как удалить коммит github Maxmaxmaximus6 Оффтопик 59 01.01.2014 19:42
КАК удалить []-символы из строки?! Brook Events/DOM/Window 4 25.04.2012 16:38