[英]How to modify this method to return an array with key => values?
這是一種有效的方法,它解析所有HTML表行,並將它們插入一個數組中,因此它變成一個行數組,但只有行值,沒有鍵:
function tableToJson(table){
var AoA = $(table+' > tbody > tr').map(function(){
return [
$('td',this).map(function(){
return $(this).text();
}).get()
];
}).get();
return JSON.stringify(AoA);
}
輸出:
[
['x','1'],
['y','2'],
['z','3']
]
我應該做些什么改變以使其返回字典數組(包含鍵和值)?
喜歡:
[
{'address': 'x','number': '1'},
{'address': 'y','number': '2'},
{'address': 'z','number': '3'}
]
我試圖替換該行:
return $(this).text();
對於:
return $(this).attr('name') => $(this).text();
但這沒有用。
return [
$('td',this).map(function(){
return $(this).text();
}).get()
];
這將生成此格式['x','1']
您可以更改它以創建一個結果對象,並為每個td
:
$(this).attr('name')
獲取密鑰 $(this).text()
獲取值 result[key] = value
擴展結果對象 解決方案:
var result = {}
$('td',this).each(function(){
var key = $(this).attr('name');
var value = $(this).text();
result[key] = value;
}).get()
return result;
我認為這是您要尋找的:
function tableToJson(table){
var r = [];
$(table+' > tbody > tr').each(function(){
var e = $(this);
r.push({address:e.attr('name'), number:e.text()});
});
return r;
}
當然,上面創建了一個對象數組。 您可以看到它們的名稱和值,例如:
var tblRws = tableToJson('#tableId');
$.each(tblRws, function(i, v){
console.log('Row:'+i+'; Address:'+v.address+'; Number:'+v.number+';');
});
我不確定為什么要使用JSON.strigify()
結果。 如果用於AJAX,則可以僅使用Object作為data
參數。 另外,您可能希望將dataType
設置為要從服務器返回的data
類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.