我有这样的html标签
<input type="checkbox" class="chekship" data-kp="NORT180606" data-po="4000779848" checked>
<input type="checkbox" class="chekship" data-kp="NORT180607" data-po="4000776985" checked>
<input type="checkbox" class="chekship" data-kp="NORT180707" data-po="4000777001" checked>
问题是当我尝试使用这些代码推送数组
$('.chekship:checked').each(function() {
data.push($(this).data("kp"),$(this).data("po"));
});
我得到的结果是
array(6) {
[0]=>
string(10) "NORT180606"
[1]=>
string(10) "4000779848"
[2]=>
string(10) "NORT180607"
[3]=>
string(10) "4000776985"
[4]=>
string(10) "NORT180707"
[5]=>
string(10) "4000777001"
}
我需要根据这些输入分隔此数组的什么
[0]=>
[0]=>
string(10) "NORT180606"
[1]=>
string(10) "4000779848"
[1]=>
[0]=>
string(10) "NORT180607"
[1]=>
string(10) "4000776985"
[2]=>
[0]=>
string(10) "NORT180707"
[1]=>
string(10) "4000777001"
我该怎么做?有点让我感到困惑。
答案 0 :(得分:3)
只需将 array 推入data
,而不是将两个单独的参数传递给push
(这会将两个单独的项添加到数组):
$('.chekship:checked').each(function() {
data.push([
$(this).data("kp"),
$(this).data("po")
]);
});
.map
可能比.each
更合适,因为您要为匹配中的每个项目创建一个新数组:
const data = $('.chekship:checked')
.map(function() {
return [
$(this).data("kp"),
$(this).data("po")
];
})
.get();
或者,根本不需要像jQuery这样的大型库,就可以实现以下简单操作:
const data = Array.prototype.map.call(
document.querySelectorAll('.chekship:checked'),
({ dataset: { kp, po } }) => [kp, po]
);
答案 1 :(得分:0)
const data = $('.chekship:checked');
const resultArr = Array.prototype.map.call(data, function(ele) {
return [ele.getAttribute('data-kp'), ele.getAttribute('data-po')];
});
console.log(resultArr);