Normalde bu tarz yolları kendim bulup yazmayı tercih ediyorum ancak bu işlem için stackoverflow da gayet güzel işe yarayan iki yol buldum ve açıkçası bana gerek kalmadı (: ama yine de buraya koymak istedim. Tablomuz şöyle olsun:
Name | Age | Gender |
four | 4 | Female |
one | 1 | Male |
three | 3 | Female |
two | 2 | Male |
İçerideki veriyi düzgünce çekebilmek için spesifik bir yol belirlememiz gerekiyor. Bunlardan ilki her satırı bir array miş gibi çekip sonra her array i kendi kolonlarından gelen içerik ile doldurmak.
var data = $.map($("tbody tr"), function (tr) {return [$.map(tr.cells, function (td) {return $(td).text();})];});
Çıktısı da bu olacaktır:
[["four", "4", "Female"],["one", "1", "Male"],["three", "3", "Female"],["two", "2", "Male"]]
Diğer bir yol ise işi yeni nesil yaklaşımlarla çözmek (: aslında tabii ki objeler listesi yeni bir yaklaşım değil ama bir çok programcının hayatına json ile filan girdiği için belki daha çok seversiniz.
var names = [].map.call($("thead th"), function (th) {return $(th).text();});var data = [].map.call($("tbody tr"), function (tr) {return [].reduce.call(tr.cells, function (p, td, i) {p[names[i]] = $(td).text();return p;}, {});});
Çıktısı da bu şekilde:
[{"Name": "four","Age": "4","Gender": "Female"}, {"Name": "one","Age": "1","Gender": "Male"}, {"Name": "three","Age": "3","Gender": "Female"}, {"Name": "two","Age": "2","Gender": "Male"}]
Aslında ne kadar kısıtlı bir kullanımı olsa da geçmişte "table" kültüründen geçmiş insanlar için özellikle çok yararı olacağını düşünüyorum. Zira onların da bildiği üzere, veritabanı tablolarını, excel tablolarını etc. filan html table haline getirmek gerçekten kolay. Bu sebeple birilerinin işine "gerçekten" yaraması ihtimali çok yüksek.