将属性分配给多维数组



这里我想给一个多维数组分配四个属性。如果它是$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++;

});

控制台错误:未捕获类型错误:无法设置未定义的属性"tp"

之所以会出现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。

我希望这能有所帮助!

相关内容

  • 没有找到相关文章

最新更新