我有一个 string
,我正在使用 string.split(' ');
拆分它,以便将字符串转换为数组。
假设我有这两个表,table1
和 table2
。
<table border="1" id="table1">
<tr>
<th colspan="2">Image One</th>
</tr>
<tr>
<td style="width:40%;"><img src="airplane.jpg" alt="Image 1"></td>
<td>
<dl>
<dt>airplane</dt>
<dt>flight</dt>
<dt>travel</dt>
<dt>military</dt>
<dt>word war</dt>
<dt>GI</dt>
</dl>
</td>
</tr>
</table>
<table border="1" id="table2">
<tr>
<th colspan="2">Image Two</th>
</tr>
<tr>
<td style="width:40%;"><img src="apple.jpg" alt="Image 1"></td>
<td>
<dl id="tags">
<dt>red</dt>
<dt>apple</dt>
<dt>round</dt>
<dt>fruit</dt>
<dt>healthy</dt>
<dt>doctor</dt>
</dl>
</td>
</tr>
</table>
现在出于测试目的,我在 table2
的 dl
上有一个 tags
的 id。
我正在使用一个函数将那个 DL
(#tags) 变成一个数组
function getArray(id) {
var node, list, arrValue;
array = [];
for (node = document.getElementById(id).firstChild;
node;
node = node.nextSibling) {
if (node.nodeType == 1 && node.tagName == 'DT') {
array.push(node.innerHTML);
}
}
console.log(array)
}
为了根据我的原始 string
检查它以查看是否有任何值匹配。
但是,我将有多个 DT
,string
将被检查。将所有表添加到一个 3d 数组中,然后根据 3d 数组检查 string
中的值是否正确?还是有更好的方法?
更新
问题是:
我最终会在表格中填满图像和标签。本质上,我希望能够根据我的字符串(将被分成一个数组)搜索这些标签,然后返回字符串中标签最多的图像。我试图找出最好的方法来做到这一点。 谢谢
最佳答案
我会使用 Object
来存储标签列表,而不是数组,其中键是标签,值是无关紧要的。
如果您使用 array.indexOf()
,这将为您提供 O(1) 查找以检查该列表中是否存在其他一些字符串,而不是 O(n) 查找。
下面的函数将找到页面上的每个 DT,然后返回一个对象,该对象包含从每个 DT 的文本到其父 DL 的 ID 的映射。
function makeMap() {
var map = {};
var dls = document.getElementsByTagName('DL');
for (var i = 0, n = dls.length; i < n; ++i) {
var dl = dls[i];
var id = dl.id;
var node = dl.firstChild;
while (node) {
if (node.nodeType == 1 && node.tagName == 'DT') {
var tag = node.textContent || node.innerText; // latter for MSIE
map[tag] = id;
}
node = node.nextSibling;
}
}
return map;
}
或者,在 jQuery 中(为了提高效率混合了一些纯 JS):
function makeMap2() {
var map = {};
var $dt = $('dl > dt');
$dt.each(function() {
var tag = this.textContent || this.innerText;
map[tag] = this.parentNode.id;
});
return map;
}
关于javascript - 3 维数组 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13959714/