Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.02.2016, 06:21
Аватар для SmartWare
Интересующийся
Отправить личное сообщение для SmartWare Посмотреть профиль Найти все сообщения от SmartWare
 
Регистрация: 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");
Ответить с цитированием
  #2 (permalink)  
Старый 28.02.2016, 08:03
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 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.
Ответить с цитированием
  #3 (permalink)  
Старый 28.02.2016, 17:00
Аватар для SmartWare
Интересующийся
Отправить личное сообщение для SmartWare Посмотреть профиль Найти все сообщения от SmartWare
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 28.02.2016, 17:56
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

SmartWare,
и в чем проблема и что делает это? s = (counter.innerHTML = this.value);
Ответить с цитированием
  #5 (permalink)  
Старый 28.02.2016, 18:00
Аватар для SmartWare
Интересующийся
Отправить личное сообщение для SmartWare Посмотреть профиль Найти все сообщения от SmartWare
 
Регистрация: 04.01.2015
Сообщений: 20

destus,
Ну вообще должно бы читать текст из textarea id="counter" но ответ undefined
Ответить с цитированием
  #6 (permalink)  
Старый 28.02.2016, 18:04
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 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>
Ответить с цитированием
  #7 (permalink)  
Старый 28.02.2016, 18:16
Аватар для SmartWare
Интересующийся
Отправить личное сообщение для SmartWare Посмотреть профиль Найти все сообщения от SmartWare
 
Регистрация: 04.01.2015
Сообщений: 20

destus,
Спасибо! Это оно)
Ответить с цитированием
  #8 (permalink)  
Старый 28.02.2016, 19:06
Аватар для SmartWare
Интересующийся
Отправить личное сообщение для SmartWare Посмотреть профиль Найти все сообщения от SmartWare
 
Регистрация: 04.01.2015
Сообщений: 20

destus,
Тут ещё одна проблемка, в архиве файл index.php в нем ваш скрипт
вы поймете что я хочу когда запустите посмотрите
в общей сложности он работает но не правильно
https://cloud.mail.ru/public/7mcm/LhFApTgAx
Ответить с цитированием
  #9 (permalink)  
Старый 28.02.2016, 20:19
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 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>
Ответить с цитированием
  #10 (permalink)  
Старый 28.02.2016, 20:33
Аватар для SmartWare
Интересующийся
Отправить личное сообщение для SmartWare Посмотреть профиль Найти все сообщения от SmartWare
 
Регистрация: 04.01.2015
Сообщений: 20

destus,
Спасибо большое, я детально изучу принцип работы скрипта.
Если будут какие-то вопросы с прошивкой телефонов, или настройкой и ремонтом пк, обращайтесь.
Ещё раз спасибо за уделенное время.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите изменить плавность прокрутки virtas Элементы интерфейса 0 28.07.2015 21:53
Изменить условие в скрипте. Помогите несмыслящему. Mafins Общие вопросы Javascript 2 06.03.2015 01:49
Немного изменить скрипт помогите - плавное открытие div'ов Эдди Элементы интерфейса 4 26.09.2013 14:23
выбрать и изменить стиль элемента. Помогите найти ошибку nabiullin11 Элементы интерфейса 16 02.09.2011 11:23
JS-скрипт для вывода результата работы PHP-скрипта в заданном месте страницы Tycoon AJAX и COMET 0 06.11.2009 10:18