有关将文本加载到数组元素的问题

时间:2015-11-28 06:37:51

标签: javascript jquery

您能否请一看这段代码,让我知道如何将每行<tr>的文本值存储在数组的元素中,并在<td>之间添加空格

有点像

arr = ["Jill, Smith, 50","Eve, Jackson, 94", "John, Doe, 80",... ] 

现在发生的事情是我得到了这个结果!

["↵    Jill↵    Smith       ↵    50↵  ", "↵    Eve↵    Jackson      ↵    94↵  ", "↵    John↵    Doe     ↵    80↵  ", "↵    Mac↵    Raian        ↵    34↵  "]

这是我的代码

&#13;
&#13;
var arr = [];
$('#authors tr').each(function () {
    arr.push($(this).text());
});
console.log(arr);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="authors" style="width:100%">
  <tr>
    <td>Jill</td>
    <td>Smith</td>		
    <td>50</td>
  </tr>
  <tr>
    <td>Eve</td>
    <td>Jackson</td>		
    <td>94</td>
  </tr>
  <tr>
    <td>John</td>
    <td>Doe</td>		
    <td>80</td>
  </tr>
    <tr>
    <td>Mac</td>
    <td>Raian</td>		
    <td>34</td>
  </tr>  
    
</table>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:3)

var arr = [];
$('#authors tr').each(function () {
  var tdval = '';  
  $(this).find('td').each(function(){
    tdval += $(this).text()+', ';
    })
    arr.push(tdval);
});
console.log(arr);

使用此代码

答案 1 :(得分:1)

您可以使用 map() 代替 each()

  1. 使用 map() 来迭代生成文本数组
  2. 使用 get()
  3. 检索文本数组
  4. 使用 join()
  5. 加入数组值

    var arr = $('#authors tr').map(function() {
      return $('td', this).map(function() { // ietrate over td nside tr
          return $(this).text(); // return text content inside
        }).get().join() // get text array and join the array values with space          
    }).get()
    
    console.log(arr);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <table id="authors" style="width:100%">
      <tr>
        <td>Jill</td>
        <td>Smith</td>
        <td>50</td>
      </tr>
      <tr>
        <td>Eve</td>
        <td>Jackson</td>
        <td>94</td>
      </tr>
      <tr>
        <td>John</td>
        <td>Doe</td>
        <td>80</td>
      </tr>
      <tr>
        <td>Mac</td>
        <td>Raian</td>
        <td>34</td>
      </tr>
    
    </table>

答案 2 :(得分:0)

使用jquery mapjoin()

var arr = [];
$('#authors tr').each(function() {
  arr.push(
    $(this).find("td").map(function(i, o) {
      return $(o).text();
    }).get().join(",")
  )
});
console.log(arr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="authors" style="width:100%">
  <tr>
    <td>Jill</td>
    <td>Smith</td>
    <td>50</td>
  </tr>
  <tr>
    <td>Eve</td>
    <td>Jackson</td>
    <td>94</td>
  </tr>
  <tr>
    <td>John</td>
    <td>Doe</td>
    <td>80</td>
  </tr>
  <tr>
    <td>Mac</td>
    <td>Raian</td>
    <td>34</td>
  </tr>

</table>

答案 3 :(得分:0)

可能不是最优雅的方式,但这可以解决问题

var arr = [];
$('#authors tr').each(function () {
    arr.push($(this).text().trim().replace(/(\n)/g, ','));
});
console.log(arr);

它基本上删除了新行的开头和结尾,然后用逗号替换其他新行