我正在尝试使用jQuery创建以下要输出的示例数组:
[["foo0","foo1"],["foo2","foo3","foo4"],["foo5"]]
我要使用的代码:
var counter = 0;
var arr = [];
$('.unknown-number-of-elements').each(function(){
var keyNumber = $(this).val();
var valToPush = "foo"+counter;
if(keyNumber in arr){
arr[keyNumber].push(["'"+ valToPush +"'"]);
}else{
arr[keyNumber] = valToPush;
}
counter++;
});
console.log(arr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="unknown-number-of-elements" value="1">
<input class="unknown-number-of-elements" value="2">
<input class="unknown-number-of-elements" value="3">
<input class="unknown-number-of-elements" value="4">
<input class="unknown-number-of-elements" value="5">
上面的代码给出了以下错误:
未捕获的TypeError:arr [keyNumber] .push不是函数
基本上,如果数组键已经存在,我想创建一个子数组并将值添加到该子数组。
答案 0 :(得分:2)
您从不创建子数组,仅将valToPush
放入一个数组中。
执行:arr[keyNumber] = [ valToPush ];
,创建一个包含您的第一个值的数组。
或者:
if ( !arr[ keyNumber ] ) {
arr[ keyNumber ] = [];
}
arr[ keyNumber ].push( valToPush );