2D 数组查询 - 尽管使用了 join(),但输出中出现意外逗号;
Posted
技术标签:
【中文标题】2D 数组查询 - 尽管使用了 join(),但输出中出现意外逗号;【英文标题】:2D Array Query - unexpected commas in output despite using join(); 【发布时间】:2020-08-14 19:46:46 【问题描述】:我正在尽我所能学习 jQuery,但我有点卡住了。我正在尝试在表格中创建一个二维表单数据数组,它似乎可以工作,但是当我尝试获取值时,我会返回逗号,即使我使用 join()。
我想知道我是否做错了什么。我正在使用按钮事件来触发警报,以使用 join() 显示值。
这是 html:
<table class="table order-list">
<thead>
<td>A</td>
<td>B</td>
<td>C</td>
</thead>
<tbody>
<tr data-key="1">
<td> <input type="text" class="pull-right form-control" name="" value="D"></td>
<td> <input type="text" class="pull-right form-control" name="" value="E"></td>
<td> <input type="text" class="pull-right form-control" name="" value="F"></td>
</tr>
<tr data-key="2">
<td> <input type="text" class="pull-right form-control" name="" value="H"></td>
<td> <input type="text" class="pull-right form-control" name="" value="I"></td>
<td> <input type="text" class="pull-right form-control" name="" value="J"></td>
</tr>
<tr data-key="2">
<td> <input type="text" class="pull-right form-control" name="" value="K"></td>
<td> <input type="text" class="pull-right form-control" name="" value="L"></td>
<td> <input type="text" class="pull-right form-control" name="" value="M"></td>
</tr>
</tbody>
</table>
<button id="btn1" style="width:100px, height:100px">Click</button>
这里是 jquery/javascript:
$("#btn1").click(function()
var tableData = $('tr').map(function()
return [$(this).find(':input').map(function()
return $(this).val()
).get()]
).get()
alert(tableData.join(""));
console.log(tableData)
);
这是我上面的输出:D,E,FH,I,JK,L,M
【问题讨论】:
【参考方案1】:假设您的目标是删除 all 输出字符串中的逗号,那么您还需要 join()
内部数组。另请注意,您可以使用箭头函数使代码更简洁。试试这个:
$("#btn1").click(function()
var tableData = $('tr').map((_, tr) => [
$(tr).find(':input').map((_, inp) => inp.value).get().join('')
]).get();
console.log(tableData.join(''));
);
#btn1 width: 100px; height: 100px;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table order-list">
<thead>
<td>A</td>
<td>B</td>
<td>C</td>
</thead>
<tbody>
<tr data-key="1">
<td><input type="text" class="pull-right form-control" name="" value="D"></td>
<td><input type="text" class="pull-right form-control" name="" value="E"></td>
<td><input type="text" class="pull-right form-control" name="" value="F"></td>
</tr>
<tr data-key="2">
<td><input type="text" class="pull-right form-control" name="" value="H"></td>
<td><input type="text" class="pull-right form-control" name="" value="I"></td>
<td><input type="text" class="pull-right form-control" name="" value="J"></td>
</tr>
<tr data-key="2">
<td><input type="text" class="pull-right form-control" name="" value="K"></td>
<td><input type="text" class="pull-right form-control" name="" value="L"></td>
<td><input type="text" class="pull-right form-control" name="" value="M"></td>
</tr>
</tbody>
</table>
<button id="btn1">Click</button>
但是,如果您的目标是创建该输出,则不需要两个循环。您可以直接循环输入以创建扁平字符串:
$("#btn1").click(function()
var tableData = $('input.form-control').map((_, inp) => inp.value).get().join('');
console.log(tableData);
);
#btn1 width: 100px; height: 100px;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table order-list">
<thead>
<td>A</td>
<td>B</td>
<td>C</td>
</thead>
<tbody>
<tr data-key="1">
<td><input type="text" class="pull-right form-control" name="" value="D"></td>
<td><input type="text" class="pull-right form-control" name="" value="E"></td>
<td><input type="text" class="pull-right form-control" name="" value="F"></td>
</tr>
<tr data-key="2">
<td><input type="text" class="pull-right form-control" name="" value="H"></td>
<td><input type="text" class="pull-right form-control" name="" value="I"></td>
<td><input type="text" class="pull-right form-control" name="" value="J"></td>
</tr>
<tr data-key="2">
<td><input type="text" class="pull-right form-control" name="" value="K"></td>
<td><input type="text" class="pull-right form-control" name="" value="L"></td>
<td><input type="text" class="pull-right form-control" name="" value="M"></td>
</tr>
</tbody>
</table>
<button id="btn1">Click</button>
【讨论】:
谢谢罗里!这很完美。最终我想使用php来获取这个数组并将其存储在SQL中,你认为使用这样的二维数组是否合适,还是我需要使用json之类的东西? 我肯定会为此使用 JSON,然后您可以保持数据的 2D 结构完整,尽管这是否重要取决于您使用它的目的。 我一直在看这个,我注意到每个数据元素都有一个标识它的引用,所以当我在上面使用 JSON stringify 时,它返回:[[] ,["D","E","F"],["H","I","J"],["K","L","M"]] 。我不确定这是否正确。你知道正确的程序是什么吗? (抱歉所有问题!) 这对我来说是正确的。您的意思是要删除第一个空的[]
?
我认为更多的是我看到的示例 jsons 使用名称来标识每个项目。我偷了一些其他代码并设法以这种格式生成了一个对象数组。你知道我如何访问其中的各个变量吗,tableData[1][1] 似乎不适用于这个: key: key: 1 values: (3) [...]0: "D" 1:“E”2:“F”长度:3个值:Array(3)[“D”,“E”,“F”] 以上是关于2D 数组查询 - 尽管使用了 join(),但输出中出现意外逗号;的主要内容,如果未能解决你的问题,请参考以下文章
是否应该在 SQLite 中使用 GROUP BY 在 UNION 上进行 INNER JOIN 花费数小时?