2014-04-26 2 views
0

여기 다차원 배열에 4 개의 속성을 지정하려고합니다. ;다차원 배열에 속성 할당

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++; 

}) :이 부분은 라인 88에서 시작

JQUERY - $record.prop = "tp"

JSFIDDLE 의해 그 한 희미 배열 경우 그것을 작동

콘솔 오류 : catch되지 않은 형식 오류 : 정의되지 않은

답변

1

이유는 하위 배열이 생성되는 시점에서 undefined 때문에 Cannot set property of undefined 오류가지고의 특성 'TP'를 설정할 수 없습니다.

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

편집

변경 코드에서 주석 행 :

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

은 당신과 같이 값을 할당 한 후 빈 object에 하위 배열을 설정하고 필요

to :

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

다음은 작동하는 JSFiddle입니다.

도움이 되었기를 바랍니다.

+0

아니요 작동하지 않습니다. jsfiddle에서 표시 할 수 있습니까? –

+0

편집 된 답변을보고 작동하는지 확인하십시오. – dSquared

+0

그것은 작동하지 않습니다. u가 jsfiddle로 시도해 볼 수 있다면 실용적인 해결책을 찾을 수 있습니다. –