使用map()创建多维数组

时间:2015-05-09 20:37:30

标签: javascript jquery arrays multidimensional-array

你好专家,
你能推荐一下:

我有两张桌子:

<tr id='firs_table'>
<td id="team">team1</td><td>45</td>
<td id="team">team2</td><td>47</td>
</tr>
<tr id='second_table'>
<td id="team">team1</td><td id="service">service name1</td><td id="count">count1</td>
<td id="team">team1</td><td id="service">service name2</td><td id="count">count2</td>
<td id="team">team1</td><td id="service">service name3</td><td id="count">count3</td>
<td id="team">team2</td><td id="service">service name1</td><td id="count">count1</td>
<td id="team">team2</td><td id="service">service name2</td><td id="count">count2</td>
</tr>

我需要创建如下字典:

team1: ['service name1','service name2','service name3'], [count1,count2, count3]
team2: ['service name1','service name2'], [count1,count2]
你可以用jquery建议算法吗? 我需要这个结果才能创建RGraph图。 提前谢谢。

我无法提供jquery代码的任何工作示例,我找不到如何迭代$(“tr#first_table td”#team“)值并将其与$(”tr#second_table td“#)进行比较的方法团队“),如果值相同=&gt;返回数组[[$(“tr#second_table td”#service“)],[$(”tr#second_table td“#count”)]]。

我的意思是,我找不到想法。

1 个答案:

答案 0 :(得分:0)

这应该做你需要的事情

var res = {}
$('table tr').each(function () {
    var cellText = $(this).find('td').map(function (i, el) {
        return $(el).text();
    }).get();
    if (!res[cellText[0]]) {
        res[cellText[0]] = [[],[]];
    }
    res[cellText[0]][0].push(cellText[1]);
    res[cellText[0]][1].push(cellText[2]);    
});

如果您有标题行,可以使用$('table tr:gt(0)')

DEMO