Найти совпадения в тексте
Здравствуйте форумчане, по заданию нужно создать текстовое поле и ввести в него слова через запятую, проанализировать его и вывести результаты по 6 критериям:
Все гласные буквы, которые входят в каждое слово Все согласные буквы, которые не входят ни в одно слово Все звонкие согласные буквы, которые входят хотя бы в одно слово Все глухие согласные, которые не входят хотя бы в одно слово Все согласные буквы, которые входят только в одно слово Все глухие согласные буквы, которые не входят только в одно слово Написано что нужно реализовать при помощи объекта Array и его методов. Подскажите пожалуйста с помощью каких методов такое возможно реализовать... буду благодарен любой помощи. Я знаю только один - split - с помощь его я превратил сроку текста в массив из слов, а что дальше делать хз... |
Цитата:
то есть кроме массива слов нужно 6 массивов для фильтрации. можно циклом , можно http://learn.javascript.ru/array-iteration вы начните. |
Цитата:
- Гласных - Согласных - Звонких согласных - Глухих согласных т.к. согласные и глухие по заданию используются дважды И я не понял как "отфильтровать по всем словам" допустим я имею 2 массива: var array1 = [мать, отец, сын]; var array2 = [а, у, о, ы, и, э, я, ю, ё, е]; как мне с помощью второго отфильтровать первый по заданным условиям? |
HelloDarkness,
function blender(letters, words, select) { return letters.filter(function(letter) { return words.every(function(word) { return word.toLowerCase().indexOf(letter.toLowerCase()) != -1 ? select : !select }) }) }; var test = blender(["А", "Я", "О", "Ё", "У", "Ю", "Ы", "И", "Э", "Е"], ["которые", "входят", "каждое", "слово"], true) alert(test);//буквы которые входят в каждое слово [O] test = blender(["А", "Я", "О", "Ё", "У", "Ю", "Ы", "И", "Э", "Е"], ["которые", "входят", "каждое", "слово"], false) alert(test);//буквы которых нет в каждом слове [Ё,У,Ю,И,Э] test = blender(["А", "Я", "О", "Ё", "У", "Ю", "Ы", "И", "Э", "Е"], test, false) alert(test);//буквы которые есть хотябы в одном слове [А,Я,О,Ы,Е] |
Цитата:
только функция мне не много не понятна, что в ней нужно будет изменить да бы применить к оставшимся двух условиям? -буквы которые входят/ не входят хотя бы в одно слово -буквы которые входят/ не входят только в одно слово тест: function blender(letters, words, select) { return letters.filter(function(letter) { return words.some(function(word) { return word.toLowerCase().indexOf(letter.toLowerCase()) != -1 ? select : !select }) }) }; var test = blender(["А", "Я", "О", "Ё", "У", "Ю", "Ы", "И", "Э", "Е"], ["которые", "входят", "каждое", "слово"], true) alert(test);//буквы которые входят в каждое слово [O] test = blender(["А", "Я", "О", "Ё", "У", "Ю", "Ы", "И", "Э", "Е"], ["которые", "входят", "каждое", "слово"], false) alert(test);//буквы которых нет в каждом слове [Ё,У,Ю,И,Э] |
HelloDarkness,
есть буквы которых нет [Ё,У,Ю,И,Э] ни в одном слове -- значит остались буквы которые есть хотябы в одном слове. смотрите пример выше - добавлено строки 12-13 |
Цитата:
Подскажите лучше по-поводу последнего пункта: -Все гласные буквы, которые входят только в одно слово. Как отфильтровать допустим только первый(0) элемент массива, а не весь массив? |
HelloDarkness,
наверно так вам будет проще <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <script> function blender(letters, words, select) { return letters.filter(function(letter) { var num = words.reduce(function(sum, word) { word.toLowerCase().indexOf(letter.toLowerCase()) != -1 && sum++ return sum },0) return select(num) }) }; var test = blender(["А", "Я", "О", "Ё", "У", "Ю", "Ы", "И", "Э", "Е"], ["которые", "входят", "каждое", "слово"], function(num) { return num == 4 //это длина массива слов }) alert(test);//буквы которые входят в каждое слово [O] test = blender(["А", "Я", "О", "Ё", "У", "Ю", "Ы", "И", "Э", "Е"], ["которые", "входят", "каждое", "слово"], function(num) { return num == 0 }) alert(test);//буквы которых нет в каждом слове [Ё,У,Ю,И,Э] test = blender(["А", "Я", "О", "Ё", "У", "Ю", "Ы", "И", "Э", "Е"], ["которые", "входят", "каждое", "слово"], function(num) { return num > 0 }) alert(test);//буквы которые есть хотябы в одном слове [А,Я,О,Ы,Е] var test = blender(["А", "Я", "О", "Ё", "У", "Ю", "Ы", "И", "Э", "Е"], ["которые", "входят", "каждое", "слово"], function(num) { return num == 3 }) alert(test);//буквы которыx нет только в 1 слове [] </script> </body> </html> |
Цитата:
или [["которые", "входят", "каждое", "слово"] [0]] |
Цитата:
Мне же нужно что бы данные брались из текстового поля... <input type="text" value="(слова которые введет пользователь, через запятую)" name ="ddata"> <script> var array = document.ddata.value.split(', ") </script> то есть мы получаем массив, но мы не знаем заранее что это за массив и из скольких элементов он будет состоять... |
Часовой пояс GMT +3, время: 09:50. |