如何使用从 DOM 中检索到的值拆分数组

How to split an array with retrieved values from DOM

我从 table 中检索了来自单个列的值,我最终将其存储在一个数组中;但是所有数据都存储在一个索引中,我还没有成功地用 .split.

拆分数组

第 1 步 -- 我的目标是 body 和 tr.

var stuff = document.getElementById('pricetable').querySelectorAll('tbody tr');

第 2 步 -- 我启动 for-loop:

for (var i = 0; i < rows.length-1; i++) {
        var rows2 = Array.prototype.slice.call(stuff)[i].querySelectorAll('td')[3];}

rows2 现在将打印如下所示的字符串:

<td>​2400​</td>​ 
<td>​1900​</td>​
<td>​9790​</td>​
<td>​1098​</td>​
<td>​1289​</td>​
<td>​3284​</td>​

我想我的问题是从这里开始的,因为我不知道如何将它变成一个数组并让每个值都存储自己的索引。

第 3 步 -- 为了仅检索文本,我创建了一个新变量:

var my_list = rows2.textContent;    

第 4 步 -- 然后我尝试拆分数组:

var price_list = my_list.split(','));

虽然price_list是一个数组(我verified),所有的值都保留在price_list[0]中。它打印如下:

["2400"]
["1900"]
["9790"]
["1098"]
["1289"]
["3284"]

如果在这种情况下 split 不起作用,我是否需要遍历这些值?如果是这样,如何?或者我应该采取不同的行动方案吗?我所做的研究解释了 split 如何处理未从 DOM.

检索到的预定义字符串

首先,这是完全没有必要的...

var rows2 = Array.prototype.slice.call(stuff)[i].querySelectorAll('td')[3];

另外,你的变量命名很奇怪。你为什么在得到第 4 个单元格时称它为 rows2

要获取第四个单元格,只需执行以下操作:

var cell4 = stuff[i].cells[3]; 

但如果您想要这些值的数组,则改为执行此操作。

var list = Array.prototype.map.call(stuff, function(row) {
    return row.cells[3].textContent;
});

这从 Array.prototype 中借用了 .map() 函数,它为您提供了一个新数组,其中包含您从回调中返回的任何值。


如果这不是您想要的,那么您需要具体描述您想要的是什么,而不是仅仅显示不符合您要求的代码。