Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.06.2021, 22:12
Аспирант
Отправить личное сообщение для prototip Посмотреть профиль Найти все сообщения от prototip
 
Регистрация: 15.05.2021
Сообщений: 35

как исправить ошибку?
Подскажите пожалуйста как исправить эти ошибки. через инпут выбираю тестовый файл книги, и код должен обработать весь текст, но в консоли выдает эти ошибки. с импортом лодаш пробовал писать const _ = require('lodash'); но все равно выдает ошибку
lod.js:2 Uncaught ReferenceError: exports is not defined
at lod.js:2
(anonymous) @ lod.js:2
lod.js:14 Uncaught TypeError: Cannot read property 'default' of undefined
at FileReader.reader.onload


<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>file</title>
</head>
<body>

<input type="file" onchange="show(this)">

<script src="lod.js"></script>
</body>
</html>

import _ from 'lodash';

function show(input) {
  const file = input.files;

  for (const el of file) {
    const reader = new FileReader();
    reader.readAsText(el);
    reader.onload = () => {
      if (typeof reader.result === 'string') {
        document.write(`Words: ${reader.result.length}`);
      }
      const res = _.words(reader.result, /[-а-яё]{4,}/gim);
      document.write(`Words: ${res}`);
      const result = _.flow([
        _.countBy,
        _.toPairs,
        _.partial(_.orderBy, _, 1, 'desc'),
        _.partial(_.take, _, 10),
      ]);
      document.write(`count: ${result(res)}`);
    };
  }
}
Ответить с цитированием
  #2 (permalink)  
Старый 28.06.2021, 03:38
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

prototip, подключите этот лёутящщ как указано у них в документации ( https://cdn.jsdelivr.net/npm/lodash@.../lodash.min.js ), или например при помощи unpkg ( https://unpkg.com/lodash@4.17.21/lodash.min.js ), или можете скачать этот файл к себе.

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>file</title>
</head>
<body>
	<input type="file" onchange="show(this)">
	<output id="info" style="white-space: pre-line;display: block;"></output>
	
	<script src="https://unpkg.com/lodash@4.17.21/lodash.min.js"></script>
	<script>
		
		function show(input) {
			const file = input.files;
			let info = document.querySelector("output#info");
			
			for (const el of file) {
				const reader = new FileReader();
				reader.readAsText(el);
				reader.onload = () => {
					if (typeof reader.result === 'string') {
						info.append(`Words: ${reader.result.length}\n`);
					}
					const res = _.words(reader.result, /[-а-яё]{4,}/gim);
					info.append(`Words: ${res.join(", ")}\n`);
					const result = _.flow([
					_.countBy,
					_.toPairs,
					_.partial(_.orderBy, _, 1, 'desc'),
					_.partial(_.take, _, 10),
					]);
					info.append(`count: ${result(res).join(", ")}\n`);
				};
			}
		}
		
	</script>
</body>
</html>


Вместо document.write создайте какой-нибудь элемент и в него вставляйте текст. См. пример выше.

Последний раз редактировалось Malleys, 28.06.2021 в 03:42. Причина: Ещё больше ссылок на лёутящщ
Ответить с цитированием
  #3 (permalink)  
Старый 28.06.2021, 13:40
Аспирант
Отправить личное сообщение для prototip Посмотреть профиль Найти все сообщения от prototip
 
Регистрация: 15.05.2021
Сообщений: 35

Malleys,
большое спасибо, очень помогли
Ответить с цитированием
  #4 (permalink)  
Старый 28.06.2021, 13:53
Аспирант
Отправить личное сообщение для prototip Посмотреть профиль Найти все сообщения от prototip
 
Регистрация: 15.05.2021
Сообщений: 35

Malleys,
последний вопрос. как сделать вывод слов после обработки текста выглядит так: СУБЪЕКТ,1279, души,578, жизни,514, чтобы,331, которые,307, когда,287, меня,269, время,232, Земле,224, того,204

как мне сделать чтобы выводило как в этой картинке

https://ibb.co/1XzmBb2

например слева слова, а справа количество слов:
СУБЪЕКТ-------------1279
души-------------578
жизни-------------514
чтобы-------------331
которые-------------307
и т.д

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>file</title>
    <link rel="stylesheet" href="index.css">
</head>
<body>
<div>
    <div id="drop-area">
        Drag and drop file here
    </div>
    <output id="log-div"></output>
</div>

<div class="file-read">
    <div class="file-input">
        <label class="custom-file-upload">
        <input type="file" onchange="show(this)">
            Upload a file
        </label>
    </div>

    <a href="">Reset</a>

</div>
<div class="output-info">
    <output id="info"></output>
</div>

<script src="https://unpkg.com/lodash@4.17.21/lodash.min.js"></script>
<script>
    function show(input) {
        const file = input.files;
        let info = document.querySelector("output#info");

        for (const el of file) {
            const reader = new FileReader();
            reader.readAsText(el);
            reader.onload = () => {
                const res = _.words(reader.result, /[-а-яё]{4,}/gim);
                const result = _.flow([
                    _.countBy,
                    _.toPairs,
                    _.partial(_.orderBy, _, 1, 'desc'),
                    _.partial(_.take, _, 10),
                ]);
                info.append(`${result(res).join(", ")}\n`);
            };
        }
    }

</script>
</body>
</html>

#drop-area {
    border: 4px dashed gray;
    padding: 100px;
    margin-top:10px;
    text-align: center;
    font-size: 40px;
    color: gray;
}
.file-read{
    margin-top:30px;
    text-align: center;
}
.file-input{

}
.custom-file-upload{
    border: 4px solid green;
    background: green;
    border-radius: 5px;
    color: white;
    padding: 10px 45px;
    position: absolute;
    left: 190px;
}
div.file-input label:hover{
    background: #1e6225;
    color: #ff044c;
}
a{
    text-decoration: none;
    border: 4px solid green;
    background: green;
    border-radius: 5px;
    color: white;
    padding: 10px 65px;
    position: absolute;
    right: 190px;
}
a:hover {
    background: #1e6225;
    color: #ff044c;
}
.output-info{
  margin-top: 100px;
    text-align: center;
}
#info{
    white-space: pre-line;display: block;
}
input[type="file"] {
    display: none;
}
Ответить с цитированием
  #5 (permalink)  
Старый 28.06.2021, 14:16
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,138

Сообщение от prototip
например слева слова, а справа количество слов:
СУБЪЕКТ-------------1279
души-------------578
жизни-------------514
чтобы-------------331
которые-------------307
Как вариант...
https://ru.stackoverflow.com/questio...словами
Ответить с цитированием
  #6 (permalink)  
Старый 28.06.2021, 20:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,081

Сообщение от prototip
как сделать вывод слов после обработки текста выглядит так
вы таблицу создать способны?
Ответить с цитированием
  #7 (permalink)  
Старый 28.06.2021, 20:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,081

prototip,
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <title>focusout</title>
</head>
<body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
   <table id="out"></table>
   <script>

let input = "Ровно мы две недели и прошло с тех пор, как мейстер Карстар решился на похищение. А именно похищением и называлось то, что он провернул. Родители пропавших студентов и пресса уже покинули территорию Академии Шепота – самого престижного учебного заведения Вельгальда до недавних пор, студенты разъезжались по домам, а я провожала Айрату – свою лучшую подругу – до ворот, когда в небе появился синий дракон.\n" +
    "\n" +
    "Без вещей, без фамильяра-защитника, положенного мы ведьме, в чужом мы плаще – он похитил меня прямо у ворот, сцапав своими когтистыми лапами.";

let res = _.words(input, /[-а-яё]{4,}/gim);
let result = _.flow([
    _.countBy,
    _.toPairs,
    _.partial(_.orderBy, _, 1, 'desc'),
    _.partial(_.take, _, 10),
])
let txt = result(res).map(([word, num]) => `<tr><td>${word}<td>${num}`).join('');
out.insertAdjacentHTML('beforeend', txt);

    </script>

</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 28.06.2021, 20:34
Аспирант
Отправить личное сообщение для prototip Посмотреть профиль Найти все сообщения от prototip
 
Регистрация: 15.05.2021
Сообщений: 35

рони,
точно, как же я сразу не додумался) спасибо
Ответить с цитированием
  #9 (permalink)  
Старый 30.06.2021, 10:47
Аспирант
Отправить личное сообщение для prototip Посмотреть профиль Найти все сообщения от prototip
 
Регистрация: 15.05.2021
Сообщений: 35

подскажите, если загружаю файл docx результат не выводится. в чем может быть причина?
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>file</title>
    <link rel="stylesheet" href="index.css">
</head>
<body>
<div>
    <div id="drop-area">
        Drag and drop file here
    </div>
</div>

<div class="file-read">
    <div class="file-input">
        <label class="custom-file-upload">
        <input type="file" onchange="show(this)">
            Upload a file
        </label>
    </div>

    <a href="">Reset</a>

</div>

<div id="table-div">
    <table id="out" width="30%"></table>
</div>

<script src="https://unpkg.com/lodash@4.17.21/lodash.min.js"></script>
<script>
    function show(input) {
        const file = input.files[0];

            const reader = new FileReader();
            reader.readAsText(file, "UTF-8");
            reader.onload = () => {
                const res = _.words(reader.result, /[-а-яё]{4,}/gim);
                const result = _.flow([
                    _.countBy,
                    _.toPairs,
                    _.partial(_.orderBy, _, 1, 'desc'),
                    _.partial(_.take, _, 10),
                ]);
                let txt = result(res).map(([word, num]) => `<tr><td>${word}<td>${num}`).join('');
                let out= document.getElementById('out');
                out.insertAdjacentHTML('beforeend', txt);
            };
    }
</script>
</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить ошибку сиснтакса maxg5 Javascript под браузер 3 20.09.2019 16:43
Как исправить ошибку( Cannot read property 'pageX' of undefined) xaker Общие вопросы Javascript 3 15.07.2018 22:52
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Необходимо найти и исправить ошибку в CSS/Javascript javascript_pupil Работа 1 02.05.2011 15:41
Как вывести ошибку в javascript? MCTrane Общие вопросы Javascript 13 05.05.2010 08:36