繁体   English   中英

将值作为单独的键值对推送到数组

[英]Push values to array as separate key value pairs

我有一个项目,我将表格每一行中特定单元格上的属性(逗号分隔的整数)的值添加到 JS 中的数组中。

我知道如果我创建一个名为 myArray 的数组,则使用myArray.push(121840,121841); myArray.length结果为 2。这是我的预期。 我曾假设(错误地)由于 numbers 属性的值是相同的格式,例如: numbers="121840,121841" ,那么使用myArray.push($(this).attr('numbers')); ,但我被误认为该数组的长度是 1,而不是 2。

请参阅下面的示例,说明我正在尝试做什么以及遇到的问题。

给定这样的表格,我从最后一个单元格的 numbers 属性中获取值:

<table border="1" width="100%">
    <tbody emp-id="02" class="" name="Steve Smith">
      <tr>
          <td colspan="4">Steve Smith</td>
      </tr>
      <tr>
          <td></td>
          <td>2</td>
          <td></td>
          <td class="total" numbers="121856,121860">2</td>
      </tr>
    </tbody>
    <tbody emp-id="01" name="Marky Mark">
      <tr>
          <td colspan="4">Marky Mark</td>
      </tr>
      <tr>
          <td>1</td>
          <td></td>
          <td>1</td>
          <td class="total" numbers="121840,121841">2</td>
      </tr>
    </tbody>
</table>

我的 JS 会是:

$('table tbody tr').each(function() {
  $(this).find('td:last').each(function(){
    if ($(this).attr('numbers')) {
        numbers.push($(this).attr('numbers'));
      names.push($(this).parents("tbody").attr('name'));
    }
  });
});

在上面的示例中,数组存储了正确的数值 (121856,121860,121840,12184),但长度为 2,因为每个单元格的值作为单个元素添加,因此 number[0]=121856 ,121860,而不是 121856。

我将如何更正此问题,以便将属性中的每个整数添加为单个元素?

JSFiddle:http: //jsfiddle.net/jacbhg0n/3/

任何帮助将不胜感激。

您可以通过使用String.split()方法拆分数字属性字符串,同时将其推入numbers数组来简单地实现这一点。

现场演示

 const numbers = []; const names = []; $('table tbody tr').each(function() { $(this).find('td:last').each(function(){ if ($(this).attr('numbers')) { numbers.push($(this).attr('numbers').split(',')); names.push($(this).parents("tbody").attr('name')); } }); }); console.log(numbers.flat());
 <table border="1" width="100%"> <tbody emp-id="02" class="" name="Steve Smith"> <tr> <td colspan="4">Steve Smith</td> </tr> <tr> <td></td> <td>2</td> <td></td> <td class="total" numbers="121856,121860">2</td> </tr> </tbody> <tbody emp-id="01" name="Marky Mark"> <tr> <td colspan="4">Marky Mark</td> </tr> <tr> <td>1</td> <td></td> <td>1</td> <td class="total" numbers="121840,121841">2</td> </tr> </tbody> </table>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM