jQuery动态创建多维数组

时间:2018-07-31 13:14:56

标签: javascript jquery arrays

我正在尝试使用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不是函数

基本上,如果数组键已经存在,我想创建一个子数组并将值添加到该子数组。

1 个答案:

答案 0 :(得分:2)

您从不创建子数组,仅将valToPush放入一个数组中。

执行:arr[keyNumber] = [ valToPush ];,创建一个包含您的第一个值的数组。

或者:

if ( !arr[ keyNumber ] ) {
    arr[ keyNumber ] = [];
}
arr[ keyNumber ].push( valToPush );