假设我有这样的HTML,
<table id="Words">
<tr>
<td class="cell">Hello</td>
<td class="desc">A word</td>
</tr>
<tr>
<td class="cell">Bye</td>
<td class="desc">A word</td>
</tr>
<tr>
<td class="cell">Tricicle</td>
<td class="desc">A toy</td>
</tr>
有没有优雅的方法/功能将其转换为Javascript关联数组?怎么去呢?
答案 0 :(得分:4)
$('tr').map(function(){
return {
cell: $('.cell', this).text(),
desc: $('.desc', this).text()
}
})
jQuery(Object { cell="Hello", desc="A word"}, Object { cell="Bye", desc="A word"}, Object { cell="Tricicle", desc="A toy"})
答案 1 :(得分:1)
http://jsfiddle.net/cyFW5/ - 这里它适用于每个带有类
的td$(function() {
var arr = [],
tmp;
$('#Words tr').each(function() {
tmp = {};
$(this).children().each(function() {
if ($(this).attr('class')) {
tmp[$(this).attr('class')] = $(this).text();
}
});
arr.push(tmp);
});
console.log(arr);
});
答案 2 :(得分:1)
var table = [];
$('table tr').each(function() {
var row = [];
$(this).find('td').each(function() {
var cell = {};
cell[$(this).attr('class')] = $(this).html();
row.push(cell);
});
table.push(row);
});
答案 3 :(得分:0)
Here's a demo,观看控制台。
$(function() {
var words = [];
$('#Words tr').each(function() {
words.push({
cell: $('.cell', this).text(),
desc: $('.desc', this).text()
});
});
console.log(words);
});
答案 4 :(得分:0)
鉴于此特定用例,这将起作用:
var results = {};
$('table#Words tr').each(function(i, x){
results[i] = {
desc: $(x).find('.desc').text(),
cell: $(x).find('.cell').text()
}
});
但为什么要将整个转换为对象?它用于什么,可能有一种更简单的方法来遍历数据。