2016-09-16 3 views
0

Ich habe einige tabellarische Daten und ich muss sie in ein Array, so dass ich nach einer Übereinstimmung an anderer Stelle im Code suchen kann. Also muss ich diese konvertieren:Sammeln Strings in ein Array mit jQuery

<td> Name 1 </td> 
<td> Name 2 </td> 
<td> Name 3 </td> 

in:

['Name 1', 'Name 2', 'Name 3'] 

Dies funktioniert nicht:

$('td').text().toArray(); 

ich wirklich gehofft, es würde :) Ich brauche den Text eines nehmen Eingabe und vergleichen Sie es mit den bestehenden <td> s, um sicherzustellen, dass es einzigartig ist, also wenn es eine bessere Art und Weise zu gehen, würde ich es gerne hören. Ich weiß, ich könnte ein leeres Array erstellen, eine Schleife erstellen oder $ .each() verwenden und (.) Jedes .text() an das Array senden, aber es muss einen prägnanteren Weg geben.

+0

Mögliche Duplikat [Erste alle Tabellen td Werte in array] (http://stackoverflow.com/questions/5991011/getting-all-the -table-td-values-in-array) – showdev

Antwort

2

Sie können jQuery map() Methode wie folgt verwenden.

var arr = $('td').map(function(){ 
 
    return $(this).text().trim(); 
 
}).get(); 
 

 
console.log(arr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
     <td> Name 1 </td> 
 
     <td> Name 2 </td> 
 
     <td> Name 3 </td> 
 
    </tr> 
 
</table>

+0

Ja, ich habe die .map() und .get() nie richtig verstanden. Vielen Dank! – SpaceNinja

+0

@Azim vielleicht können Sie mir sagen - wann wissen Sie, wann .get() notwendig sein wird? Ich weiß, dass die Dokumentation sagt .get() "Ruft die DOM Elemente ab, die durch das jQuery Objekt zusammengebracht werden". Wenn Sie also eine übereinstimmende Menge von einem normalen jQuery-Selektor zurückgegeben haben, wissen Sie, dass Sie dann auch eine .get() -Option verwenden müssen, um die bereits in der übereinstimmenden Menge enthaltenen Elemente abzurufen. – SpaceNinja

+1

'map()' gibt ein jQuery-Objekt zurück. 'get()' gibt ein Array zurück, das jedes Element in einem jQuery-Objekt (plain JS-Array) enthält. @SpaceNinja – Azim

1

Sie müssen über die Elemente in einer Schleife und jeder Text ist eine bekommen. Im Klar js könnten Sie tun:

var result = Array.prototype.map.call(document.getElementsByTagName("td"), function(el) { 
 
     return el.innerHTML.trim(); 
 
    }); 
 

 
    console.log(result)
<table> 
 
    <tr> 
 
     <td> Name 1 </td> 
 
     <td> Name 2 </td> 
 
     <td> Name 3 </td> 
 
    </tr> 
 
</table>