Как удалить повторяющиеся слова в строке в JavaScript? - PullRequest
0 голосов
/ 16 февраля 2020

Я пытался удалить повторяющиеся слова из строки, и она не работает.

У меня есть текущая строка:

const categories = 'mexican, restaurant, mexican, food, restaurant'

, и я хочу этот результат:

const x = 'mexican restaurant food'

Я пробовал следующее:

const x = categories.replace(/,/g, '');

    const uniqueList = x
      .split()
      .filter((currentItem, i, allItems) => {
        return i === allItems.indexOf(currentItem);
      })
      .join();

Что дает мне:

uniqueList = 'chinese restaurant chinese food restaurant'

Что не так с кодом выше?

Ответы [ 3 ]

1 голос
/ 16 февраля 2020

Мне нравится использовать Set для такого рода целей. Прочтите в документации:

Объект Set позволяет хранить уникальные значения любого типа, будь то примитивные значения или ссылки на объекты.

Это может работать для вас:

const categories = 'mexican, restaurant, mexican, food, restaurant'.split(', ');

const unique = Array.from(new Set(categories));

console.log(unique);

console.log(unique.join(' '));

Надеюсь, это поможет!

0 голосов
/ 16 февраля 2020

const categories = 'mexican, restaurant, mexican, food, restaurant';

    const uniqueList = categories
      .split(', ') // split the string when a comma + space is found
      .filter((currentItem, i, allItems) => {
        return i === allItems.indexOf(currentItem);
      }) // filter out duplicates
      .join(' '); // rejoin array to string
      
 console.log( uniqueList );
0 голосов
/ 16 февраля 2020

В методе String.prototype.split(separator), который используется вами, если разделитель пропущен, будет возвращен массив с одним элементом - исходной строкой. Так что в вашем коде должно быть .split(' ') вместо .split(). Но лучше использовать .split(', ') без const x = categories.replace(/,/g, '');. И даже вы можете .split(/\s*,\s*/), таким образом вам не нужно заботиться о пробелах. Присоединяйтесь по умолчанию, используя ',' в качестве разделителя. Поэтому вы должны написать .join(' ').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...