#javascript
Вопрос:
здравствуйте, я хотел бы сохранить повторяющиеся элементы абзаца в массиве, чтобы позже проверить слова, которые являются грубыми, у меня есть функция, с помощью которой я могу преобразовать абзац в массив, но я не знаю, как сохранить повторяющиеся слова в массиве
function awa(parrafo, palabrasNoPermitidas) {
let array1 = parrafo.split(" ");
console.log(array1);
}
awa("hello I'm a bunny, if you are a bunny u are bunny too", ["ball"]);
Комментарии:
1. Можете ли вы уточнить, что вы хотели бы сохранить? Пожалуйста, покажите пример вывода
awa("hello I'm a bunny, if you are a bunny u are bunny too", ["ball"]);
2. Мне нужно сохранить слова, дублированные в данном случае, это банни
3. Итак, результат
awa("hello I'm a bunny, if you are a bunny u are bunny too", ["ball"]);
был бы["bunny"]
?4. конечно, но если есть более повторяющиеся элементы, они должны быть показаны в массиве;
5. Почему бы просто не проверить строку напрямую на наличие таких грубых слов, как
parrafo.match(new RegExp("(" palabrasNoPermitidas.join("|") ")", "g"))
?
Ответ №1:
Это приведет к тому, что массив split() будет отфильтрован и будет содержать только дубликаты.
parrafo.split(" ").filter((e,i,a) => e.trim() amp;amp; a.indexOf(e) !== i);
фильтр в основном говорит, что фильтруйте каждый элемент массива и сначала посмотрите, пуст ли он, а затем, совпадает ли его индекс массива с индексом массива первых экземпляров. Если это не то же самое, это дубликат, поэтому верните true
function awa(parrafo, palabrasNoPermitidas) {
return parrafo.split(" ").filter((e,i,a) => e.trim() amp;amp; a.indexOf(e) !== i);
}
let repeated = awa("hello I'm a bunny, if you are a bunny u are bunny too", ["ball"]);
console.log(repeated)
Ответ №2:
Давайте сначала рассмотрим несколько сценариев:
Это наилучший вариант развития событий:
"bunny bunny".split(" ")
//=> ["bunny", "bunny"]
Однако, если есть внутренние, начальные и/или конечные пробелы, нам необходимо исключить пустые строки как дубликаты:
" bunny bunny ".split(" ")
//=> ["", "", "", "", "bunny", "", "", "", "", "bunny", "", "", "", ""]
Большинство людей использовали бы знаки препинания. В этом случае все становится еще сложнее. Как вы можете видеть, здесь нет дубликатов:
"bunny, bunny and bunny!".split(" ")
//=> ["bunny,", "bunny", "and", "bunny!"]
Так что вам, вероятно, следует разделиться по «границе слов».:
"bunny, bunny and bunny!".split(/b/)
//=> ["bunny", ", ", "bunny", " ", "and", " ", "bunny", "!"]
Который по-прежнему будет работать с внутренними, начальными и/или конечными пробелами:
" bunny, bunny and bunny! ".split(/b/)
//=> [" ", "bunny", ", ", "bunny", " ", "and", " ", "bunny", "! "]
Имея это в виду:
"hello I'm a bunny, if you are a bunny u are bunny too".split(/b/).filter((x,i,xs) => (/^[a-z] $/i).test(x) amp;amp; xs.indexOf(x) != i)
//=> ["a", "bunny", "are", "bunny"]