Поможите с переделкой кода
Всем привет, кодю на 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, время: 23:13. |