Найти совпадения в тексте
Здравствуйте форумчане, по заданию нужно создать текстовое поле и ввести в него слова через запятую, проанализировать его и вывести результаты по 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> то есть мы получаем массив, но мы не знаем заранее что это за массив и из скольких элементов он будет состоять... |
HelloDarkness,
и какая проблема ? взять вместо ["которые", "входят", "каждое", "слово"] подставить array а вместо return num == 4 return num == array.length а вместо return num == 3 return num == array.length - 1 |
Цитата:
1.Все гласные буквы, которые входят в каждое слово - num == array.length 2.Все согласные буквы, которые не входят ни в одно слово - num == 0 3.Все звонкие согласные буквы, которые входят хотя бы в одно слово num > 0 4.Все глухие согласные, которые не входят хотя бы в одно слово num ?? 5.Все согласные буквы, которые входят только в одно слово num == array[0]??? 6.Все глухие согласные буквы, которые не входят только в одно слово num == array.length - 1 |
Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 04:43. |