Поможите с переделкой кода
Всем привет, кодю на 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... Пожалуйста если не поможете то хотя бы направте что изменить.. |
Людиии пожалуйста поможите уже переделал так, все равно в браузере в отладке ругается на скобку, и ничего не ищет
<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]; }; |
Цитата:
|
Вот код с полем ввода, в которое вводим выражение типа "слово 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> |
Lexx32,
может минимальный макет? пока не очень понятно, где ищем, что ищем, куда выводим и в каком виде? |
Цитата:
|
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> |
Цитата:
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')) |
Да, в твоем примере ищется, но у меня немного другая задача, нужно еще выводить в таблицу, переделал так, вообще перестало искать...
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]; }; |
У меня почему то массив res, mas в отладчике пустые
|
Часовой пояс GMT +3, время: 15:09. |