Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.08.2021, 10:32
Интересующийся
Отправить личное сообщение для Lexx32 Посмотреть профиль Найти все сообщения от Lexx32
 
Регистрация: 11.09.2013
Сообщений: 17

Поможите с переделкой кода
Всем привет, кодю на vb.net, соотв.. js не знаю - только начал учить, срочно понадобился код поиска в текстовой базе, в инете нашел пример функции, но поиск идет только по одному значению, а мне нужно (если введено предложение) чтоб обязательно включало все слова..
Это пример на обычном vb
function test()
dim i,x,col
dim val=document.getElementById('str').value;
var arr = split(val,' ');
for i=0 to ubound(Keyword)
     for x=0 to ubound(arr)
	if instr(keyword(i),arr(x))>0 then
	        col=split(keyword(i),"|")
		nStroka = '<tr><td>'+col(0)+'</td>';
		nStroka = nStroka + '<td>'+col(1)+'</td><td>'+col(2)+'</td><td>'+col(3)+'</td></tr>';
		dlm = dlm + nStroka;	
	end if
     next	
next
  dlm = dlm + '</table>';

Я попытался переделать это так
function test() {
 var val = document.getElementById('str').value;
 var arr = val.split(' ');
 var nStroka ='';
 for(var i = 0; i < Keyword.length; i++) {
	arr.forEach(function(elem) {
	if (Keyword[i].indexOf(elem) !== -1){
		nStroka = '<tr><td>'+col[0]+'</td>';
		nStroka = nStroka + '<td>'+col[1]+'</td><td>'+col[2]+'</td><td>'+col[3]+'</td></tr>';
		dlm = dlm + nStroka;	
	};
	};
  dlm = dlm + '</table>';
  document.getElementById('info1').innerHTML=dlm;
  document.getElementById('info0').innerHTML='   ' + Keyword [0];
 };

Это оригинал функции для поиска одного введенного значения
function test() {
 var val = document.getElementById('str').value;
 var dlm = '';
 var re = new RegExp('\^'+val,'i');
 dlm = '<table border=1 width=90%><th>зн0</th><th>зн1</th><th>зн2</th><th>зн3</th>';
 for(var i = 0; i < Keyword.length; i++) {
 var col = Keyword[i].split('|');
 if (re.test(Keyword[i])) {
 var nStroka ='';
 nStroka = '<tr><td>'+col[0]+'</td>';
 nStroka = nStroka + '<td>'+col[1]+'</td><td>'+col[2]+'</td><td>'+col[3]+'</td></tr>';
 dlm = dlm + nStroka;
 };
 };
 dlm = dlm + '</table>';
 document.getElementById('info1').innerHTML=dlm;
 document.getElementById('info0').innerHTML='   ' + Keyword [0];
 };

Прошу не пинать, только начинаю учить js...
Пожалуйста если не поможете то хотя бы направте что изменить..
Ответить с цитированием
  #2 (permalink)  
Старый 20.08.2021, 11:05
Интересующийся
Отправить личное сообщение для Lexx32 Посмотреть профиль Найти все сообщения от Lexx32
 
Регистрация: 11.09.2013
Сообщений: 17

Людиии пожалуйста поможите уже переделал так, все равно в браузере в отладке ругается на скобку, и ничего не ищет
<script type="text/javascript">
var Keyword=[];
Keyword [0] = "20.08.2021 9:33:19"
Keyword [1] = "Слово 10 | asdsd0 | ddd1ddddddddd | ff1fffffffffff";
Keyword [2] = "Слово 11 | asds1d | ddd2ddddddddd | fff2ffffffffff";
Keyword [3] = "Слово 12 | asds2d | ddd3ddddddddd | ffff3fffffffff";
Keyword [4] = "Слово 13 | asds3d | dddd4dddddddd | fffff4ffffffff";
Keyword [5] = "Слово 14 | asds4d | ddddd5ddddddd | ffffff5fffffff";
Keyword [6] = "Слово 15 | asds5d | dddddd6dddddd | fffffff6ffffff";
Keyword [7] = "Слово 16 | asds6d | ddddddd7ddddd | ffffffff7fffff";
Keyword [8] = "Слово 17 | asds7d | dddddddd8dddd | fffffffff8ffff";
Keyword [9] = "Слово 18 | asds8d | ddddddddd9ddd | ffffffffff9fff";
 
 function test() {
 var val = document.getElementById('str').value;
 var arr = val.split(' ');
 var nStroka ='';
 dlm = '<table border=1 width=90%><th>зн0</th><th>зн1</th><th>зн2</th><th>зн3</th>';
 for(var i = 0; i < Keyword.length; i++) {
	arr.forEach(function(elem) {
	if (Keyword[i].indexOf(elem) !== -1){
		var col = Keyword[i].split('|');
		nStroka = '<tr><td>'+col[0]+'</td>';
		nStroka = nStroka + '<td>'+col[1]+'</td><td>'+col[2]+'</td><td>'+col[3]+'</td></tr>';
		dlm = dlm + nStroka;	
	};
	};
	)};
  dlm = dlm + '</table>';
  document.getElementById('info1').innerHTML=dlm;
  document.getElementById('info0').innerHTML='   ' + Keyword [0];
 };
Ответить с цитированием
  #3 (permalink)  
Старый 20.08.2021, 11:14
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от Lexx32
Людиии пожалуйста поможите
По, приводимым тобой, "примерам" мало чего понятно... Сделай тестовый пример и расскажи что ты хочешь из него получить.
Ответить с цитированием
  #4 (permalink)  
Старый 20.08.2021, 11:21
Интересующийся
Отправить личное сообщение для Lexx32 Посмотреть профиль Найти все сообщения от Lexx32
 
Регистрация: 11.09.2013
Сообщений: 17

Вот код с полем ввода, в которое вводим выражение типа "слово 10"
и мне выходят те позиции в отоых это встречается
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
</style>
</head>
 <body>
   <script type="text/javascript">
var Keyword=[];
Keyword [0] = "20.08.2021 9:33:19"
Keyword [1] = "Слово 10 | asdsd0 | ddd1ddddddddd | ff1fffffffffff";
Keyword [2] = "Слово 11 | asds1d | ddd2ddddddddd | fff2ffffffffff";
Keyword [3] = "Слово 12 | asds2d | ddd3ddddddddd | ffff3fffffffff";
Keyword [4] = "Слово 10 | asds3d | dddd4dddddddd | fffff4ffffffff";
Keyword [5] = "Слово 14 | asds4d | ddddd5ddddddd | ffffff5fffffff";
Keyword [6] = "Слово 15 | asds5d | dddddd6dddddd | fffffff6ffffff";
Keyword [7] = "Слово 10 | asds6d | ddddddd7ddddd | ffffffff7fffff";
Keyword [8] = "Слово 17 | asds7d | dddddddd8dddd | fffffffff8ffff";
Keyword [9] = "Слово 18 | asds8d | ddddddddd9ddd | ffffffffff9fff";
 
 function test() {
 var val = document.getElementById('str').value;
 var arr = val.split(' ');
 var nStroka ='';
 dlm = '<table border=1 width=90%><th>Наименование</th><th>МНН</th><th>Кол</th><th>Отделение</th>';
 for(var i = 0; i < Keyword.length; i++) {
	arr.forEach(function(elem) {
	if (Keyword[i].indexOf(elem) !== -1){
		var col = Keyword[i].split('|');
		nStroka = '<tr><td>'+col[0]+'</td>';
		nStroka = nStroka + '<td>'+col[1]+'</td><td>'+col[2]+'</td><td>'+col[3]+'</td></tr>';
		dlm = dlm + nStroka;	
	};
	)};
	)};
  dlm = dlm + '</table>';
  document.getElementById('info1').innerHTML=dlm;
  document.getElementById('info0').innerHTML='   ' + Keyword [0];
 };

 
 function test2() {
 var val = document.getElementById('str2').value;
 var dlm = '';
 var re = new RegExp('\^'+val,'i');
 dlm = '<table border=1 width=90%><th>Наименование</th><th>МНН</th><th>Кол</th><th>Отделение</th>';
 for(var i = 0; i < Keyword.length; i++) {
 var col = Keyword[i].split('|');
 if (re.test(col[1])) {
 var nStroka ='';
 nStroka = '<tr><td>'+col[0]+'</td>';
 nStroka = nStroka + '<td>'+col[1]+'</td><td>'+col[2]+'</td><td>'+col[3]+'</td></tr>';
 dlm = dlm + nStroka;
 };
 };
 dlm = dlm + '</table>';
 document.getElementById('info1').innerHTML=dlm;
 document.getElementById('info0').innerHTML='   ' + Keyword [0];
 };
   
   </script>

<table>
	<tr>
	<td>По торговому наименованию</td>
	<td>
		<form onsubmit='test(); return false;'>
		<input type='text' id='str' value='' />
		</form> 
	</td>
	</tr>
</table>

</center>


<div id='info0'>Актуальность </div>
    <div id='info1'>
      <table border=1 width=90%>
<th>зн0</th><th>зн1</th><th>зн2</th><th>зн3</th></table>
</div>


    </body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 20.08.2021, 11:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Lexx32,
может минимальный макет? пока не очень понятно, где ищем, что ищем, куда выводим и в каком виде?
Ответить с цитированием
  #6 (permalink)  
Старый 20.08.2021, 11:22
Интересующийся
Отправить личное сообщение для Lexx32 Посмотреть профиль Найти все сообщения от Lexx32
 
Регистрация: 11.09.2013
Сообщений: 17

Сообщение от Lexx32 Посмотреть сообщение
Вот код с полем ввода, в которое вводим выражение типа "слово 10"
и мне выходят те позиции в отоых это встречается
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
</style>
</head>
 <body>
   <script type="text/javascript">
var Keyword=[];
Keyword [0] = "20.08.2021 9:33:19"
Keyword [1] = "Слово 10 | asdsd0 | ddd1ddddddddd | ff1fffffffffff";
Keyword [2] = "Слово 11 | asds1d | ddd2ddddddddd | fff2ffffffffff";
Keyword [3] = "Слово 12 | asds2d | ddd3ddddddddd | ffff3fffffffff";
Keyword [4] = "Слово 10 | asds3d | dddd4dddddddd | fffff4ffffffff";
Keyword [5] = "Слово 14 | asds4d | ddddd5ddddddd | ffffff5fffffff";
Keyword [6] = "Слово 15 | asds5d | dddddd6dddddd | fffffff6ffffff";
Keyword [7] = "Слово 10 | asds6d | ddddddd7ddddd | ffffffff7fffff";
Keyword [8] = "Слово 17 | asds7d | dddddddd8dddd | fffffffff8ffff";
Keyword [9] = "Слово 18 | asds8d | ddddddddd9ddd | ffffffffff9fff";
 
 function test() {
 var val = document.getElementById('str').value;
 var arr = val.split(' ');
 var nStroka ='';
 dlm = '<table border=1 width=90%><th>Наименование</th><th>МНН</th><th>Кол</th><th>Отделение</th>';
 for(var i = 0; i < Keyword.length; i++) {
	arr.forEach(function(elem) {
	if (Keyword[i].indexOf(elem) !== -1){
		var col = Keyword[i].split('|');
		nStroka = '<tr><td>'+col[0]+'</td>';
		nStroka = nStroka + '<td>'+col[1]+'</td><td>'+col[2]+'</td><td>'+col[3]+'</td></tr>';
		dlm = dlm + nStroka;	
	};
	)};
	)};
  dlm = dlm + '</table>';
  document.getElementById('info1').innerHTML=dlm;
  document.getElementById('info0').innerHTML='   ' + Keyword [0];
 };

 
 function test2() {
 var val = document.getElementById('str2').value;
 var dlm = '';
 var re = new RegExp('\^'+val,'i');
 dlm = '<table border=1 width=90%><th>Наименование</th><th>МНН</th><th>Кол</th><th>Отделение</th>';
 for(var i = 0; i < Keyword.length; i++) {
 var col = Keyword[i].split('|');
 if (re.test(col[1])) {
 var nStroka ='';
 nStroka = '<tr><td>'+col[0]+'</td>';
 nStroka = nStroka + '<td>'+col[1]+'</td><td>'+col[2]+'</td><td>'+col[3]+'</td></tr>';
 dlm = dlm + nStroka;
 };
 };
 dlm = dlm + '</table>';
 document.getElementById('info1').innerHTML=dlm;
 document.getElementById('info0').innerHTML='   ' + Keyword [0];
 };
   
   </script>

<table>
	<tr>
	<td>По торговому наименованию</td>
	<td>
		<form onsubmit='test(); return false;'>
		<input type='text' id='str' value='' />
		</form> 
	</td>
	</tr>
</table>

</center>


<div id='info0'>Актуальность </div>
    <div id='info1'>
      <table border=1 width=90%>
<th>зн0</th><th>зн1</th><th>зн2</th><th>зн3</th></table>
</div>


    </body>
</html>
выше указанная функция искала только одно слово, мне нужно 2,3 короче сколько введет пользователь
Ответить с цитированием
  #7 (permalink)  
Старый 20.08.2021, 11:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Lexx32,
фразы писать через |
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <style>
    </style>
</head>

<body>
    <script type="text/javascript">
        var Keyword = [];
        Keyword[0] = "20.08.2021 9:33:19"
        Keyword[1] = "Слово 10 | asdsd0 | ddd1ddddddddd | ff1fffffffffff";
        Keyword[2] = "Слово 11 | asds1d | ddd2ddddddddd | fff2ffffffffff";
        Keyword[3] = "Слово 12 | asds2d | ddd3ddddddddd | ffff3fffffffff";
        Keyword[4] = "Слово 10 | asds3d | dddd4dddddddd | fffff4ffffffff";
        Keyword[5] = "Слово 14 | asds4d | ddddd5ddddddd | ffffff5fffffff";
        Keyword[6] = "Слово 15 | asds5d | dddddd6dddddd | fffffff6ffffff";
        Keyword[7] = "Слово 10 | asds6d | ddddddd7ddddd | ffffffff7fffff";
        Keyword[8] = "Слово 17 | asds7d | dddddddd8dddd | fffffffff8ffff";
        Keyword[9] = "Слово 18 | asds8d | ddddddddd9ddd | ffffffffff9fff";

        function test() {
            var val = document.getElementById('str').value;
            var arr = val.trim().split('|');
            var table = '<table border=1 width=90%><tr><th>Наименование</th><th>МНН</th><th>Кол</th><th>Отделение</th>';
            for (var i = 0; i < Keyword.length; i++) {
                arr.forEach(function(elem) {
                    if (Keyword[i].indexOf(elem) !== -1) {
                        var col = Keyword[i].split('|');
                        col = col.map(text => `<td>${text}</td>`).join('');
                        table += `<tr>${col}`; 
                    };
                })};
                table += '</table>';
                document.getElementById('info1').innerHTML = table;
                document.getElementById('info0').innerHTML = '   ' + Keyword[0];
        };
    </script>
    <table>
        <tr>
            <td>По торговому наименованию</td>
            <td>
                <form onsubmit='test(); return false;'>
                    <input type='text' id='str' value='Слово 10|Слово 15' />
                </form>
            </td>
        </tr>
    </table>
    </center>
    <div id='info0'>Актуальность </div>
    <div id='info1'>
        <table border=1 width=90%>
            <th>зн0</th>
            <th>зн1</th>
            <th>зн2</th>
            <th>зн3</th>
        </table>
    </div>
</body>

</html>

Последний раз редактировалось рони, 20.08.2021 в 11:55.
Ответить с цитированием
  #8 (permalink)  
Старый 20.08.2021, 11:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от Lexx32
Вот код с полем ввода, в которое вводим выражение типа "слово 10"
и мне выходят те позиции в отоых это встречается
Как вариант...
const arr=[];
arr[0] = "20.08.2021 9:33:19"
arr[1] = "Слово 10 | asdsd0 | ddd1ddddddddd | ff1fffffffffff";
arr[2] = "Слово 11 | asds1d | ddd2ddddddddd | fff2ffffffffff";
arr[3] = "Слово 12 | asds2d | ddd3ddddddddd | ffff3fffffffff";
arr[4] = "Слово 10 | asds3d | dddd4dddddddd | fffff4ffffffff";
arr[5] = "Слово 14 | asds4d | ddddd5ddddddd | ffffff5fffffff";
arr[6] = "Слово 15 | asds5d | dddddd6dddddd | fffffff6ffffff";
arr[7] = "Слово 10 | asds6d | ddddddd7ddddd | ffffffff7fffff";
arr[8] = "Слово 17 | asds7d | dddddddd8dddd | fffffffff8ffff";
arr[9] = "Слово 18 | asds8d | ddddddddd9ddd | ffffffffff9fff";
let val = 'Слово 10, Слово 17'
val = val.replace(/,\s?/, '|')
val = new RegExp(val)
const res = arr.filter(el => val.test(el))
alert(res.join('\n'))
Ответить с цитированием
  #9 (permalink)  
Старый 20.08.2021, 13:20
Интересующийся
Отправить личное сообщение для Lexx32 Посмотреть профиль Найти все сообщения от Lexx32
 
Регистрация: 11.09.2013
Сообщений: 17

Да, в твоем примере ищется, но у меня немного другая задача, нужно еще выводить в таблицу, переделал так, вообще перестало искать...
function test() {
	let val = document.getElementById('str').value;
	val = val.replace(/,\s?/, '|')
	val = new RegExp(val)
	const res = Keyword.filter(el => val.test(el))
	let mas = res.join('\n');
	for(var i = 0; i < mas.length; i++) {
		var col = mas[i].split('|');
		nStroka = '<tr><td>'+col[0]+'</td>';
		nStroka = nStroka + '<td>'+col[1]+'</td><td>'+col[2]+'</td><td>'+col[3]+'</td></tr>';
		dlm = dlm + nStroka;	
	};
	dlm = dlm + '</table>';
	document.getElementById('info1').innerHTML=dlm;
	document.getElementById('info0').innerHTML='   ' + Keyword [0];
 };
Ответить с цитированием
  #10 (permalink)  
Старый 20.08.2021, 13:22
Интересующийся
Отправить личное сообщение для Lexx32 Посмотреть профиль Найти все сообщения от Lexx32
 
Регистрация: 11.09.2013
Сообщений: 17

У меня почему то массив res, mas в отладчике пустые
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не отрабатывает функция в общем потоке кода DVV Events/DOM/Window 1 07.07.2019 16:05
jQuery, не работает часть кода в joomla 3 Kuzma Элементы интерфейса 1 06.05.2015 09:27
Как визуализировать структуру кода? dkudrin Общие вопросы Javascript 2 22.08.2014 19:12
скрыть из исходного кода часть javascript кода. javasc Javascript под браузер 10 12.03.2014 09:32
Удаление участка кода replace Dorian_bs Общие вопросы Javascript 3 23.11.2012 23:19