jQuery动态创建多维数组

5
我尝试使用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">

上述代码出现以下错误:
未捕获的类型错误:arr[keyNumber].push不是一个函数。
如果数组键已经存在,我想创建一个子数组并向该子数组添加值。

请查看这里,在JavaScript中没有in运算符来检查元素是否存在于数组中。 - Durga
1个回答

2

你不需要创建子数组,只需要将valToPush放入一个数组中。

操作如下:arr[keyNumber] = [ valToPush ];,这样就创建了一个包含第一个值的数组。

或者:

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

2
需要 var keyNumber = parseInt( $(this).val() ) - Ben West

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接