从文本框中创建多维阵列,以比较和合并其详细信息
我一直在尝试比较几天的线路,但仍未找到解决方案。实际上,看来我无法在多维数组中拆分一个数组。如果有人知道一个更好的解决方案并想分享它,我将为您提供完整的详细信息。
我有一个HTML页面,其中包括一个文本框,其中我要加载要使用的数据。它调用外部JavaScript文件中的多个操作以三个跨度显示执行的数据,这是一个演示:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="..\..\..\css\style.css">
<script type="text/javaScript" src="..\..\js\javaction.js"></script>
</head>
<body>
<span id='CHANGINGvalue'><textarea rows="4" cols="20" id="loadingTEXTboxDATA" name="saveIT" onkeyup="actionJAVA1(document.getElementById('CHANGINGvalue'));actionJAVA2(document.getElementById('CHANGINGvalue'));" value="">load data inside this text box</textarea><div class="tooltipRIGHT">🛈<span class="tooltiptext">load data inside this text box</span></div></br></span>
<span id='showAREAdata1'>sss</span><br><br>
<span id='showAREAdata2'>ccc</span><br><br>
<span id='showAREAdata3'>hhh</span><br>
</body>
</html>
这是我的javaction.js文件:
function actionJAVA1(val)
{
var startingDATA = val.value;
if (startingDATA.includes("text to trigger action")) {
// first block of text to search trough
var i= 0;
var bloccoPERlinee = val.value.split("\n");
for ( i = 0; i < bloccoPERlinee.length; ++i)
{
if (bloccoPERlinee[i].includes('specific text search 1'))
{
// Yes, it's there
}
else {
// block of code to be executed if the condition is false
bloccoPERlinee[i] = ""
}
}
var SBLOCCOlinee1 = bloccoPERlinee.join("\n");
const removeEmptyLines = SBLOCCOlinee1.split(/\r?\n/).filter(line => line.trim() !== '').join('\n');
var eSEfunzionaLOpotevoTROVAREprima = removeEmptyLines.split('\n').filter(function (s) { return s.match('filtering word to eclude') })
var l = 0;
for ( l = 0; l < eSEfunzionaLOpotevoTROVAREprima.length; ++l)
{
eSEfunzionaLOpotevoTROVAREprima[l] = eSEfunzionaLOpotevoTROVAREprima[l].split('permit');
eSEfunzionaLOpotevoTROVAREprima[l] = eSEfunzionaLOpotevoTROVAREprima[l][1]
}
var ANCORAnonSOgestireARRAYmultilinea = eSEfunzionaLOpotevoTROVAREprima.join("\n");
document.getElementById('showAREAdata1').innerText = ANCORAnonSOgestireARRAYmultilinea;
// second block of text to search trough
var x= 0;
var bloccoPERlinee2 = val.value.split("\n");
for ( x = 0; x < bloccoPERlinee2.length; ++x)
{
if (bloccoPERlinee2[x].includes('alternative text to search trough'))
{
// Yes, it's there
}
else {
// block of code to be executed if the condition is false
bloccoPERlinee2[x] = ""
}
}
var SBLOCCOlinee2 = bloccoPERlinee2.join("\n");
const removeEmptyLines2 = SBLOCCOlinee2.split(/\r?\n/).filter(line => line.trim() !== '').join('\n');
var senzaCOMMENTI = removeEmptyLines2.split("\n");
document.getElementById('showAREAdata2').innerText = senzaCOMMENTI;
到目前为止,我已经正确地找到了我想要的数据,主要是发生数值值。以不同的格式和细节在第一个阵列(名为AncoranonSogeSogeTirearraymultilinea)和第二个过滤操作(array2命名为senzacommenti)中。
除此之外,我确实希望在Array1中仅是Array 2中的任何行的一匹匹配,我现在应该比较它们并合并匹配数据以在跨度“ Showareadata3”中显示。
我认为将它们分为二维数组,如果在Array1和Array2的两个行中显示任何值,我应该从ARRA1的LINE值添加来自Array2中匹配行的最后一个值。
我开始从那些数组中宣布克隆,然后尝试按行分开数组值,并通过给定的字符,在这种情况下是斜线 /但是我设法使其每次工作一个。在第二拆分时,它停止工作,整个Java功能崩溃。
在Array2上,它应该更容易,因为它已经存在于数组中,并且我应该在空白空间中分开以获得多维数组实际上更糟:我做不到:它也崩溃了整个Java功能。
这是我在最后一个情况下尝试的特定内容:
var senzaCOMMENTIa = structuredClone(senzaCOMMENTI);
var senzaCOMMENTIa = Array.from(senzaCOMMENTIa);
const myArray = senzaCOMMENTIa.split(" ");}}
我可能会认为使用地图或每张地图 - 我还尝试了一些解决方案,但没有成功。
在评论中,Swiffy询问了输入和输出的示例:
文本框:来自外部源的多行粘贴文本 [
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ut velit eget arcu eleifend consequat. Suspendisse tempor ut tellus ut fermentum. Donec sed euismod felis. Fusce venenatis viverra metus quis elementum. Etiam diam sapien, dignissim eget auctor a, bibendum vel nulla. Morbi non vulputate quam. Ut commodo venenatis ultrices. Phasellus a diam ultricies, iaculis enim at, lobortis nibh. Proin sodales tristique quam. Vivamus ornare sollicitudin mi, nec tincidunt neque mollis eget. Vivamus fermentum cursus felis, id pulvinar magna semper non. Duis id eros in massa dictum maximus. Nullam mollis risus non ligula consectetur, vel interdum massa laoreet. Aliquam nec finibus ex.
Praesent pretium hendrerit urna in finibus. Sed lacus ex, pharetra sed leo sed, molestie ultricies turpis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas dictum viverra fermentum. Donec tincidunt libero tortor. Pellentesque facilisis, urna id viverra volutpat, massa erat finibus urna, sit amet rutrum felis lectus eu ex. Maecenas tincidunt orci molestie turpis ullamcorper, non feugiat felis tempus. Fusce rutrum urna sit amet mattis suscipit. Aliquam non sem sollicitudin, lacinia orci sit amet, finibus nisi. Mauris sollicitudin massa non massa sollicitudin pellentesque. Duis finibus ipsum et molestie tempor.
Maecenas
line1dataA/line1dataB
tempus
line2dataC/line2dataD data3b
. Vestibulum
line3dataE/line3dataF
Sed efficitur lorem vitae orci
data1a data2a data 3a(occasional) data4a
tincidunt volutpat.
data1b data2b data3b
data1c data2c data3c(occasional) data3d
Sed volutpat velit ut neque varius gravida a et elit. Ut egestas diam in urna varius, at volutpat mi rutrum. Sed dictum venenatis arcu, sit amet maximus tellus egestas vitae. Sed condimentum orci ac dolor dictum cursus. Suspendisse et eros velit. Donec rhoncus purus ex, nec volutpat elit viverra a. Integer efficitur non nibh eget congue.
Interdum et malesuada fames ac ante ipsum primis in faucibus. Morbi hendrerit bibendum lectus, at convallis sem cursus vel. Aliquam nec sem scelerisque, tempor elit sed, lacinia augue. Duis ex ipsum, tempus non placerat non, eleifend maximus est. Suspendisse sodales nulla a quam euismod, in tincidunt elit venenatis. Cras interdum vitae felis at vestibulum. Integer ac est ultricies, tincidunt ipsum in, tempor eros. Vivamus ultrices massa eleifend viverra auctor.
]
虽然是我已经从array1找到的数组,例如:
array1: [line1dataA/line1dataB
line2dataC/line1dataD,
line3dataE/line3dataF,
so on,]
对于:对于:
array2: [data1a data2a data 3a(occasional) data4a, data1b data2b data3b, data1c data2c data3c(occasional) data4c, so on]
比较结果:
line1dataA/line1dataB data4a
line2dataC/line2dataD data3b
line3dataE/line3dataF data4c
so on
I’ve been trying to compare a block of lines for a few days now and still haven't found a solution. Actually, it seems that I can't split an array in a multidimensional array. I’ll give you full details should anyone know a better solution and would like to share it.
I have an html page including a textbox where I load data I want to use. It calls several action in an external javascript file to show executed data in three spans, here is a demo:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="..\..\..\css\style.css">
<script type="text/javaScript" src="..\..\js\javaction.js"></script>
</head>
<body>
<span id='CHANGINGvalue'><textarea rows="4" cols="20" id="loadingTEXTboxDATA" name="saveIT" onkeyup="actionJAVA1(document.getElementById('CHANGINGvalue'));actionJAVA2(document.getElementById('CHANGINGvalue'));" value="">load data inside this text box</textarea><div class="tooltipRIGHT">🛈<span class="tooltiptext">load data inside this text box</span></div></br></span>
<span id='showAREAdata1'>sss</span><br><br>
<span id='showAREAdata2'>ccc</span><br><br>
<span id='showAREAdata3'>hhh</span><br>
</body>
</html>
This is my javaction.js file:
function actionJAVA1(val)
{
var startingDATA = val.value;
if (startingDATA.includes("text to trigger action")) {
// first block of text to search trough
var i= 0;
var bloccoPERlinee = val.value.split("\n");
for ( i = 0; i < bloccoPERlinee.length; ++i)
{
if (bloccoPERlinee[i].includes('specific text search 1'))
{
// Yes, it's there
}
else {
// block of code to be executed if the condition is false
bloccoPERlinee[i] = ""
}
}
var SBLOCCOlinee1 = bloccoPERlinee.join("\n");
const removeEmptyLines = SBLOCCOlinee1.split(/\r?\n/).filter(line => line.trim() !== '').join('\n');
var eSEfunzionaLOpotevoTROVAREprima = removeEmptyLines.split('\n').filter(function (s) { return s.match('filtering word to eclude') })
var l = 0;
for ( l = 0; l < eSEfunzionaLOpotevoTROVAREprima.length; ++l)
{
eSEfunzionaLOpotevoTROVAREprima[l] = eSEfunzionaLOpotevoTROVAREprima[l].split('permit');
eSEfunzionaLOpotevoTROVAREprima[l] = eSEfunzionaLOpotevoTROVAREprima[l][1]
}
var ANCORAnonSOgestireARRAYmultilinea = eSEfunzionaLOpotevoTROVAREprima.join("\n");
document.getElementById('showAREAdata1').innerText = ANCORAnonSOgestireARRAYmultilinea;
// second block of text to search trough
var x= 0;
var bloccoPERlinee2 = val.value.split("\n");
for ( x = 0; x < bloccoPERlinee2.length; ++x)
{
if (bloccoPERlinee2[x].includes('alternative text to search trough'))
{
// Yes, it's there
}
else {
// block of code to be executed if the condition is false
bloccoPERlinee2[x] = ""
}
}
var SBLOCCOlinee2 = bloccoPERlinee2.join("\n");
const removeEmptyLines2 = SBLOCCOlinee2.split(/\r?\n/).filter(line => line.trim() !== '').join('\n');
var senzaCOMMENTI = removeEmptyLines2.split("\n");
document.getElementById('showAREAdata2').innerText = senzaCOMMENTI;
So far so good: I correctly managed to find the data I want that mainly are numeric value occurring in a different format and details in both arrays coming out from first (array1 named ANCORAnonSOgestireARRAYmultilinea) and second filtering actions (array2 named senzaCOMMENTI).
Besides that I do expect that in array1 should be just one match for any line in array 2, I now should compare them and merge matching data to show in span "showAREAdata3".
I thought to split them getting multdimensional array and if any value show up in both lines from array1 and array2 I should add at line value from arra1 last value from matching line in array2.
I start declaring a clone from those array and then trying to split array1 value by line and by given characters that in this case is a slash / but I managed to make it work just one per time. At second split it stop to work and the whole java function crash.
On array2 which should be even easier since it already comes in an array and I just should split by blank space to get multidimensional array is actually worse: I can not do it: it also crash the whole java function.
That’s in the specific what I tried in this last case:
var senzaCOMMENTIa = structuredClone(senzaCOMMENTI);
var senzaCOMMENTIa = Array.from(senzaCOMMENTIa);
const myArray = senzaCOMMENTIa.split(" ");}}
I may think to use map or for each – and I also tried a few solutions but did not succeded.
In the comments Swiffy asked for an example of how the input and outputs should be:
text box : mult line pasted text from external source
[
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ut velit eget arcu eleifend consequat. Suspendisse tempor ut tellus ut fermentum. Donec sed euismod felis. Fusce venenatis viverra metus quis elementum. Etiam diam sapien, dignissim eget auctor a, bibendum vel nulla. Morbi non vulputate quam. Ut commodo venenatis ultrices. Phasellus a diam ultricies, iaculis enim at, lobortis nibh. Proin sodales tristique quam. Vivamus ornare sollicitudin mi, nec tincidunt neque mollis eget. Vivamus fermentum cursus felis, id pulvinar magna semper non. Duis id eros in massa dictum maximus. Nullam mollis risus non ligula consectetur, vel interdum massa laoreet. Aliquam nec finibus ex.
Praesent pretium hendrerit urna in finibus. Sed lacus ex, pharetra sed leo sed, molestie ultricies turpis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas dictum viverra fermentum. Donec tincidunt libero tortor. Pellentesque facilisis, urna id viverra volutpat, massa erat finibus urna, sit amet rutrum felis lectus eu ex. Maecenas tincidunt orci molestie turpis ullamcorper, non feugiat felis tempus. Fusce rutrum urna sit amet mattis suscipit. Aliquam non sem sollicitudin, lacinia orci sit amet, finibus nisi. Mauris sollicitudin massa non massa sollicitudin pellentesque. Duis finibus ipsum et molestie tempor.
Maecenas
line1dataA/line1dataB
tempus
line2dataC/line2dataD data3b
. Vestibulum
line3dataE/line3dataF
Sed efficitur lorem vitae orci
data1a data2a data 3a(occasional) data4a
tincidunt volutpat.
data1b data2b data3b
data1c data2c data3c(occasional) data3d
Sed volutpat velit ut neque varius gravida a et elit. Ut egestas diam in urna varius, at volutpat mi rutrum. Sed dictum venenatis arcu, sit amet maximus tellus egestas vitae. Sed condimentum orci ac dolor dictum cursus. Suspendisse et eros velit. Donec rhoncus purus ex, nec volutpat elit viverra a. Integer efficitur non nibh eget congue.
Interdum et malesuada fames ac ante ipsum primis in faucibus. Morbi hendrerit bibendum lectus, at convallis sem cursus vel. Aliquam nec sem scelerisque, tempor elit sed, lacinia augue. Duis ex ipsum, tempus non placerat non, eleifend maximus est. Suspendisse sodales nulla a quam euismod, in tincidunt elit venenatis. Cras interdum vitae felis at vestibulum. Integer ac est ultricies, tincidunt ipsum in, tempor eros. Vivamus ultrices massa eleifend viverra auctor.
]
while being the array I've already found fro array1 such as:
array1: [line1dataA/line1dataB
line2dataC/line1dataD,
line3dataE/line3dataF,
so on,]
and for array2 such as:
array2: [data1a data2a data 3a(occasional) data4a, data1b data2b data3b, data1c data2c data3c(occasional) data4c, so on]
result of comparision:
line1dataA/line1dataB data4a
line2dataC/line2dataD data3b
line3dataE/line3dataF data4c
so on
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论