[英]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.