2016-09-16 49 views
0

我有一些表格数据,我需要把它们放到一个数组中,以便我可以在代码的其他地方寻找匹配。所以,我需要转换成这样:收集​​字符串到jQuery数组中

<td> Name 1 </td> 
<td> Name 2 </td> 
<td> Name 3 </td> 

到:

['Name 1', 'Name 2', 'Name 3'] 

这不起作用:

$('td').text().toArray(); 

我真的希望它会:)我需要的文本输入并与现有的<td>进行比较以确保它是独一无二的,所以如果有更好的方法去解决它,我很乐意听到它。我知道我可以创建一个空数组,创建一个循环或者使用$ .each()和push()每个.text()到数组中,但是必须有一个更简洁的方法。

+0

[让所有表TD值到数组]的可能的复制(http://stackoverflow.com/questions/5991011/getting-all-the -table-td-values-into-array) – showdev

回答

2

您可以使用jQuery map()方法如下。

var arr = $('td').map(function(){ 
 
    return $(this).text().trim(); 
 
}).get(); 
 

 
console.log(arr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
     <td> Name 1 </td> 
 
     <td> Name 2 </td> 
 
     <td> Name 3 </td> 
 
    </tr> 
 
</table>

+0

是的,我从来没有完全理解.map()和.get()。谢谢! – SpaceNinja

+0

@Azim也许你可以告诉我 - 什么时候.get()将是必要的?我知道文档说.get()“检索由jQuery对象匹配的DOM元素”。所以当你有一个正常的jQuery选择器返回的匹配集合时,你怎么知道你还需要做一个.get()来“检索”已匹配集合中的项目? – SpaceNinja

+1

'map()'返回一个jQuery对象。 'get()'返回一个包含jQuery对象中每个元素的数组(普通的JS数组)。 @SpaceNinja – Azim

1

你需要循环的元素,让每个人的文字。在简单的JS,你可以这样做:

var result = Array.prototype.map.call(document.getElementsByTagName("td"), function(el) { 
 
     return el.innerHTML.trim(); 
 
    }); 
 

 
    console.log(result)
<table> 
 
    <tr> 
 
     <td> Name 1 </td> 
 
     <td> Name 2 </td> 
 
     <td> Name 3 </td> 
 
    </tr> 
 
</table>