Table.Properties.RowNames似乎与字符串的单元格数组的行为不同,即使它显然是什么。我可以通过将字符串数组分配给变量来获取字符串数组的行为。想知道对此的解释是什么......
var headers = [];
$('table.report thead > tr > th').each(function($i, obj) { //or <td> instead of <th>
headers.push($(obj).text());
});
var data = [];
$('table.report tbody > tr').each(function($i, tr) {
var row = [];
$(tr).find('th').each(function($h, td) {
row[headers[$h]] = td.text();
});
data.push(row);
});
var json = JSON.stringify(data);
答案 0 :(得分:0)
我认为答案是因为它不是真正的字符串单元格数组,而是以逗号分隔的列表:
>> x=array2table( ...
ones(3), 'RowNames', {'Row1','RowRow2','RowRowRow3'} )
x = Var1 Var2 Var3
____ ____ ____
Row1 1 1 1
RowRow2 1 1 1
RowRowRow3 1 1 1
>> x.Properties.RowNames{:}
ans = Row1
>> [a,b,c]=x.Properties.RowNames{:}
a = Row1
b = RowRow2
c = RowRowRow3
值得注意的是x.Properties.RowNames {:}与变量&#34; a&#34;之间的行为差异。在原帖中:
a=x.Properties.RowNames
在我的特定应用程序中,这意味着我需要在使用布尔矢量掩码提取元素之前将x.Properties.RowNames分配给外部变量。如果我不这样做,则赋值的左侧将根据布尔掩码的输出参数数量而变化,例如:
>> [a,b]=x.Properties.RowNames{[true false true]}
a = Row1
b = RowRowRow3
就像一个启发点,我发现这是一个有趣的提醒,即使x.Properties.RowNames是一个单元格的列数组,布尔向量可以是水平的或垂直的(它不重要) )。
用户&#34; excaza&#34;提醒我之间的差异
x.Properties.RowNames{:}
和
a=x.Properties.RowNames
a{:}
通过使用圆括号索引可以避免以保留数据的字符串数组类型:
>> x.Properties.RowNames(:)
ans = 'Row1'
'RowRow2'
'RowRowRow3'
>> a=x.Properties.RowNames
a = 'Row1'
'RowRow2'
'RowRowRow3'
>> a(:)
ans = 'Row1'
'RowRow2'
'RowRowRow3'
我必须承认,我最初试图避免这种直接解决方案,以避免显示数据中的单引号分隔符,但这是避免上述花括号差异的一种方法。