将值赋给数字索引多维数组jquery

时间:2014-04-26 16:46:36

标签: javascript jquery multidimensional-array

我想使用.each()循环一个jquery选择器,并将值赋给多维数组$ record。 这是我尝试过的,它不起作用

JQUERY:

var $record = new Array(),
    i=0,
    x,y;
$("td").each(function(){       
    x = Math.floor((i+1)/4),
    y = i%4;
    $record[x][y] = true;    
    i++;
});

CHROME CONSOLE ERROR:未捕获的TypeError:无法设置未定义的属性“0”

2 个答案:

答案 0 :(得分:1)

由于您没有定义内部数组,因此错误正在增加。

尝试,

$("td").each(function(){       
    x = Math.floor((i+1)/4),
    y = i%4;
    if(!$.isArray($record[x])) { $record[x] = []; }
    $record[x][y] = true;    
    i++;
});

答案 1 :(得分:0)

考虑一下

var record = [],
    i = 0,
    x = Math.floor((i+1)/4),
    y = Math.floor((i+1)/4)

console.log(record); // 0
console.log(record[0]); // undefined
console.log(record[x][y]); // Uncaught TypeError: 
                           // Cannot read property '0' of undefined 

首次迭代,i0。您正在尝试访问不存在的元素。或者更具体地说,数组上的属性0,如果索引0上有元素,它就会存在。

换句话说,如果你向数组中添加一些东西,它就会获得它的属性:

record[0] = 'something';
console.log(record['0'], record.hasOwnProperty('0')); // 'something', true