0

我试图通过过滤键来分离几个对象。例如,我可能想在第一个表中输出“yar”和“foo”对象的数据,而在第二个表中输出其余对象的数据。

这会产生一个完整的表:

console.log(data);
var firstTable = 'yar foo'.split(' ');
for(var i = 0; i < data.length; i++) {
    for(var key in data[i]) {
        html = '<tr data-item="' + key + '"></tr>';
    }
    $('table#one tbody').append(html);
}

我追求的结果:

<table>
<tbody>
  <tr data-item="yar"></tr>
  <tr data-item="foo"></tr>
</tbody>
</table>

<table>
<tbody>
  <tr data-item="bar"></tr>
  <tr data-item="rawr"></tr>
</tbody>
</table>

console.log(data) 返回:

0: Object
    foo: Object
        lorem: Array[2]
            0: "1"
            1: "2"
1: Object
    bar: Object
        lorem: Array[2]
            0: "1"
            1: "2"
2: Object
    yar: Object
        lorem: Array[2]
            0: "1"
            1: "2"
3: Object
    rawr: Object
        lorem: Array[2]
            0: "1"
            1: "2"

我试图匹配key$.inArray(key, firstTable)但第一个 for 循环让我最终得到太多行。很高兴我能得到任何帮助!

4

2 回答 2

1

一次将行附加到各自的表中,并记住 inArray 不会返回 true 或 false - 它返回数组中项目的索引 (0..n),如果项目返回 -1不在那里。

for(var i = 0; i < data.length; i++) {
    for(var key in data[i]) {
        html = '<tr data-item="' + key + '"></tr>';

        if ($.inArray(key, firstTable) >= 0)
          $('table#one tbody').append(html);
        else
          $('table#two tbody').append(html);
    }
}
于 2013-05-08T13:39:00.460 回答
0

这只是一个猜测,但请尝试在循环中添加一个中断。

var firstTable = 'yar foo'.split(' ');
for(var i = 0; i < data.length; i++) {
    for(var key in data[i]) {
        html = '<tr data-item="' + key + '"></tr>';
    }
    break;

然后你会输出表格的其余部分。

for(var i = 2; i < data.length; i++) {
    for(var key in data[i]) {
        html = '<tr data-item="' + key + '"></tr>';
    }
// ...
于 2013-05-08T13:34:57.877 回答