格式化嵌套.each函数

时间:2017-01-17 13:46:27

标签: javascript jquery html arrays json

我有一些代码:jsfiddle



var array_return1 = [];

$(".table__product td:nth-child(1)").each(function(){
    var productitems = $(this).html() 
         
    array_return1.push({ "Pvalue" : productitems }); 
});

alert(JSON.stringify(array_return1));

<table class="table__product">
  <tr>
    <td>Apple</td>
    <td>3384</td>
    <td>iPhone</td>
  </tr>
  <tr>
    <td>Samsung</td>
    <td>8800</td>
    <td>Galaxy</td>
  </tr>
  <tr>
    <td>LG</td>
    <td>8684</td>
    <td>V20</td>
  </tr>
  <tr>
    <td>Google</td>
    <td>8179</td>
    <td>Pixel</td>
  </tr>
  <tr>
    <td>Blackberry</td>
    <td>4554</td>
    <td>Storm</td>
  </tr>
  <tr>
    <td>Motorolla</td>
    <td>6764</td>
    <td>Z force</td>
  </tr>
</table>
&#13;
&#13;
&#13;

我希望根据html表将结果集设为{Pvalue:Apple Cvalue:3384}。截至目前我只有Pvalue。根据我的研究,我需要使用某种嵌套的.each()函数。但是,我将如何使用它并同时具有此格式。我希望每个产品都能与它的充电类型相匹配。

2 个答案:

答案 0 :(得分:3)

您只是阅读每行的第二个td元素,因此得到结果{Pvalue:3384}

您需要迭代每一行并从第一个单元格获取Pvalue,从第二个单元格获取Cvalue

//Iterate and create an array of object
var array_return1 = $(".table__product tr").map(function() {
  var tds = $(this).find('td');
  return {
    "Pvalue": tds.eq(0).text(), //Get text from td based on index 0
    "Cvalue": tds.eq(1).text() //Get text from td based on index 1
  }
}).get(); //To get native array 

参考.map().eq()

var array_return1 = $(".table__product tr").map(function() {
  var tds = $(this).find('td');
  return {
    "Pvalue": tds.eq(0).text(),
    "Cvalue": tds.eq(1).text()
  }
}).get();

console.log(array_return1);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table__product">
  <tr>
    <td>Apple</td>
    <td>3384</td>
    <td>iPhone</td>
  </tr>
  <tr>
    <td>Samsung</td>
    <td>8800</td>
    <td>Galaxy</td>
  </tr>
  <tr>
    <td>LG</td>
    <td>8684</td>
    <td>V20</td>
  </tr>
  <tr>
    <td>Google</td>
    <td>8179</td>
    <td>Pixel</td>
  </tr>
  <tr>
    <td>Blackberry</td>
    <td>4554</td>
    <td>Storm</td>
  </tr>
  <tr>
    <td>Motorolla</td>
    <td>6764</td>
    <td>Z force</td>
  </tr>
</table>

答案 1 :(得分:1)

找到Close-UserSession而不是tr,并为每个td访问您想要的两个tr

&#13;
&#13;
td
&#13;
var array_return1 = [];

$(".table__product tr").each(function() {
  var td = $('td', this),
      productitems = td.eq(0).text(),
      productId = td.eq(1).text();

  array_return1.push({
    Pvalue: productitems,
    Cvalue: productId
  });

});

alert(JSON.stringify(array_return1));
&#13;
&#13;
&#13;