我有点绿色,因为你可以通过我的帖子历史告诉我,但我正在尝试获取JSON对象的关键值,而不是像我想象的那样输出。我做错了什么?
(function($){
jQuery(document).ready(function(){
var tableRows = [];
var headersText = [];
var $headers = $("th");
var $rows = $("#table tbody tr").each(function(index) {
$cells = $(this).find("td");
tableRows[index] = {};
$cells.each(function(cellIndex) {
if(headersText[cellIndex] === undefined) {
headersText[cellIndex] = $($headers[cellIndex]).text();
}
tableRows[index][headersText[cellIndex]] = $(this).text();
});
});
var tableData = {
"tableData": tableRows
};
/*alert(JSON.stringify(tableData));*/
$.each([tableData], function(key, value){
console.log( key + ":" + value );
});
});
})(jQuery);
在控制台我得到:
0:[object Object]
而不是(示例):
0:[NAME SAMPLE-NAME]
答案 0 :(得分:6)
当一个对象变成一个字符串,并且串起字符串和对象时,该对象将转换为字符串,并且对象的字符串表示为[object Object]
console.log( key + ":" + value ); // you're concantenating strings and objects
试试这个
console.log( key, value );
作为一个sitenote,$.each
迭代对象和数组,因此不需要将对象包装在数组中,或者将数组包装在对象中?
答案 1 :(得分:2)
问题不在于console.log,而是你的迭代。
你的意思是这样做我想:
$.each(tableData["tableData"], function(key, value){
console.log( key, value );
});
不
$.each([tableData], function(key, value){
console.log( key, value );
});
在原始代码中,您创建了一个包含一个元素的数组 - [tableData]
,然后对其进行迭代,这并没有任何意义。 TableData是一个哈希 - 哈希没有键和值,它有一组键和值。你需要迭代哈希。