簡體   English   中英

如何修改此方法以返回鍵=>值的數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM