单独输出多个JavaScript对象

时间:2013-05-08 13:24:23

标签: javascript jquery json object

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

这会产生 ONE 完整表:

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循环让我最终得到了太多行。很高兴能得到任何帮助!

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分: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>';
    }
// ...