将属性赋值给多维数组

时间:2014-04-26 18:04:12

标签: jquery multidimensional-array

这里我想为多维数组分配四个属性。 如果它是一个由$record.prop = "tp"

组成的单调数组,它就可以工作

JSFIDDLE - 此部分从第88行开始

JQUERY:

var $record = new Array(),
    i=0,
    x,y,
    tp,rt,bt,lt;
    $record.prop = 'tp';
    $record.prop = 'rt';
    $record.prop = 'bt';
    $record.prop = 'lt';
$("td").each(function(){      
    console.log("x:"+(Math.floor(i/$cols))+",y:"+(i%$cols)); 
    x = Math.floor(i/4),
    y = i%4;
    if(!$.isArray($record[x])) { $record[x] = []; }    
    //if(!$.isArray($record[x][y])) { $record[x][y] = []; }
    if($(this).css("border-top-color") == "black"){
        $record[x][y].tp = true;
    } else { $record[x][y].tp = false; }
    if($(this).css("border-right-color") == "black"){
        $record[x][y].rt = true;
    } else { $record[x][y].rt = false; }
    if($(this).css("border-bottom-color") == "black"){
        $record[x][y].bt = true;
    } else { $record[x][y].bt = false; }
    if($(this).css("border-left-color") == "black"){
        $record[x][y].lt = true;
    } else { $record[x][y].lt = false; }
    i++;

});

CONSOLE ERROR:未捕获TypeError:无法设置属性' tp'未定义的

1 个答案:

答案 0 :(得分:1)

您收到Cannot set property of undefined错误的原因是因为子阵列在创建时为undefined

您需要将子数组设置为空object,然后像这样分配值:

$record[x][y] = {};
$record[x][y].tp = '...';

修改

更改代码中的注释行:

if(!$.isArray($record[x][y])){ $record[x][y] = []; }

为:

if (!$.isPlainObject($record[x][y])){ $record[x][y] = {}; }

这是工作JSFiddle

我希望这有帮助!