28.02.2016, 06:21
|
|
Интересующийся
|
|
Регистрация: 04.01.2015
Сообщений: 20
|
|
Помогите изменить цыкл перебора и вывода результата
Есть вот такой скрипт, он считает количество каждого символа.
// регвыр символов, которые учавствуют в подсчёте.
var allowed = /[а-яё]/i;
// собираем информацию :
var results = Array.prototype.reduce.call("Хорошо", function (data, letter) {
if (allowed.test(letter)) {
letter = letter.toLowerCase();
if (data[letter] === undefined) {
data[letter] = 0;
}
data[letter] += 1;
}
return data;
}, {});
// выводим:
for (var letter in results) {
alert('Символ "' + letter + '" повторяется "' + results[letter] + '" раз.');
}
Помогите изменить цыкл перебора и вывода результата.
// выводим:
for (var letter in results) {
alert('Символ "' + letter + '" повторяется "' + results[letter] + '" раз.');
}
Мне нужно чтобы результат выводился не по одной букве как сейчас, а в таком виде (пример на слове "Хорошо": 'Символы "х","о","р","ш" повторяется "1,3,1,1" раз.').
Можно даже разделить символы и количество на два alert();
Сначала буквы alert("х","о","р","ш"); потом количество alert("1,3,1,1");
|
|
28.02.2016, 08:03
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
<script>
// регвыр символов, которые учавствуют в подсчёте.
var allowed = /[а-яё]/i,
letterString = new String,
countRepeatString = new String,
s = "Хорошо";
// собираем информацию :
var results = Array.prototype.reduce.call(s, function (data, letter) {
if (allowed.test(letter)) {
letter = letter.toLowerCase();
if (data[letter] === undefined) {
data[letter] = 0;
}
data[letter] += 1;
}
return data;
}, {});
// выводим:
for (var letter in results) {
letterString += letter + ", ";
countRepeatString += results[letter] + ', ';
}
alert('пример на слове "'+ s +'": Символы ' + letterString.substr(0, letterString.length - 2) + ' повторяется ' + countRepeatString.substr(0, countRepeatString.length - 2) + ' раз');
</script>
Последний раз редактировалось destus, 28.02.2016 в 08:09.
|
|
28.02.2016, 17:00
|
|
Интересующийся
|
|
Регистрация: 04.01.2015
Сообщений: 20
|
|
destus,
Спасибо, это то что нужно, ну теперь проблема, текст я беру с textarea через textarea.onkeyup.
<form action="?" method="post">
<textarea name="comments" cols=38 rows="7" id="counter"></textarea>
</form>
<script>
var textarea = document.getElementsByName("comments")[0];
textarea.onkeyup = function() {
// регвыр символов, которые учавствуют в подсчёте.
var allowed = /[а-яё]/i,
letterString = new String,
countRepeatString = new String,
s = (counter.innerHTML = this.value);
// собираем информацию :
var results = Array.prototype.reduce.call(s, function (data, letter) {
if (allowed.test(letter)) {
letter = letter.toLowerCase();
if (data[letter] === undefined) {
data[letter] = 0;
}
data[letter] += 1;
}
return data;
}, {});
// выводим:
for (var letter in results) {
letterString += letter + ", ";
countRepeatString += results[letter] + ', ';
}
alert('пример на слове "'+ s +'": Символы ' + letterString.substr(0, letterString.length - 2) + ' повторяется ' + countRepeatString.substr(0, countRepeatString.length - 2) + ' раз');
}
</script>
Последний раз редактировалось SmartWare, 28.02.2016 в 17:03.
|
|
28.02.2016, 17:56
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
SmartWare,
и в чем проблема и что делает это? s = (counter.innerHTML = this.value);
|
|
28.02.2016, 18:00
|
|
Интересующийся
|
|
Регистрация: 04.01.2015
Сообщений: 20
|
|
destus,
Ну вообще должно бы читать текст из textarea id="counter" но ответ undefined
|
|
28.02.2016, 18:04
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
SmartWare,
<script>
document.addEventListener('DOMContentLoaded', function () {
var textarea = document.getElementsByName("comments")[0];
textarea.onkeyup = function () {
// регвыр символов, которые учавствуют в подсчёте.
var allowed = /[а-яё]/i,
letterString = new String,
countRepeatString = new String,
s = this.value;
// собираем информацию :
var results = Array.prototype.reduce.call(s, function (data, letter) {
if (allowed.test(letter)) {
letter = letter.toLowerCase();
if (data[letter] === undefined) {
data[letter] = 0;
}
data[letter] += 1;
}
return data;
}, {});
// выводим:
for (var letter in results) {
letterString += letter + ", ";
countRepeatString += results[letter] + ', ';
}
alert('пример на слове "' + s + '": Символы ' + letterString.substr(0, letterString.length - 2) + ' повторяется ' + countRepeatString.substr(0, countRepeatString.length - 2) + ' раз');
}
})
</script>
<form action="?" method="post">
<textarea name="comments" cols=38 rows="7" id="counter"></textarea>
</form>
|
|
28.02.2016, 18:16
|
|
Интересующийся
|
|
Регистрация: 04.01.2015
Сообщений: 20
|
|
destus,
Спасибо! Это оно)
|
|
28.02.2016, 19:06
|
|
Интересующийся
|
|
Регистрация: 04.01.2015
Сообщений: 20
|
|
destus,
Тут ещё одна проблемка, в архиве файл index.php в нем ваш скрипт
вы поймете что я хочу когда запустите посмотрите
в общей сложности он работает но не правильно
https://cloud.mail.ru/public/7mcm/LhFApTgAx
|
|
28.02.2016, 20:19
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
SmartWare,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>ТИТЛ</title>
<link rel="stylesheet" href="header.css" />
<script src='Chart.min.js'></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<form action="?" method="post">
<textarea name="comments" cols=38 rows="7" id="counter"></textarea>
</form>
<!-- Гистограмма -->
</br></br>
<canvas id="income" width="600" height="400"></canvas>
<script>
var income = document.getElementById("income").getContext("2d");
var barData = {
labels: [],
datasets: [
{
fillColor: "#48A497",
strokeColor: "#48A4D1",
data: []
}
]
}
new Chart(income).Bar(barData);
</script>
<script>
document.addEventListener('DOMContentLoaded', function () {
var textarea = document.getElementsByName("comments")[0];
textarea.onkeyup = function () {
// регвыр символов, которые учавствуют в подсчёте.
var allowed = /[а-яё]/i,
s = this.value;
// собираем информацию :
var results = Array.prototype.reduce.call(s, function (data, letter) {
if (allowed.test(letter)) {
letter = letter.toLowerCase();
if (data[letter] === undefined) {
data[letter] = 0;
}
data[letter] += 1;
}
return data;
}, {});
barData.labels = []
barData.datasets[0].data = [];
// выводим:
for (var letter in results) {
barData.labels.push(letter);
barData.datasets[0].data.push(results[letter]);
new Chart(income).Bar(barData);
}
}
});
</script>
</body>
</html>
|
|
28.02.2016, 20:33
|
|
Интересующийся
|
|
Регистрация: 04.01.2015
Сообщений: 20
|
|
destus,
Спасибо большое, я детально изучу принцип работы скрипта.
Если будут какие-то вопросы с прошивкой телефонов, или настройкой и ремонтом пк, обращайтесь.
Ещё раз спасибо за уделенное время.
|
|
|
|