我试图通过过滤密钥来分离几个对象。例如,我可能想要在第一个表中输出“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循环让我最终得到了太多行。很高兴能得到任何帮助!
答案 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>';
}
// ...