1

このような 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連想配列に変換するエレガントな方法/関数はありますか? それについてどうやって行くのですか?

4

5 に答える 5

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"})
于 2012-04-13T07:52:00.787 に答える
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);

});​
于 2012-04-13T07:52:02.830 に答える
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);
});
于 2012-04-13T07:58:13.563 に答える
0

この特定のユースケースを考えると、これはうまくいくでしょう:

var results = {};
$('table#Words tr').each(function(i, x){
    results[i] = {
      desc: $(x).find('.desc').text(),
      cell: $(x).find('.cell').text()
    }
});

しかし、なぜ全体をオブジェクトに変換するのでしょうか? 何のために使用されているのか、データをウォークスルーする簡単な方法があるかもしれません。

于 2012-04-13T07:51:13.393 に答える