1

必要なのは、たとえば「PMS03」を含むセル [2,2] をクリックしたときに、PMS03 を含むすべてのセルを表示するアラートが必要な場合です。これは alert("Positions: [2 ,1]、[2,2]、[3,7]");

「pointmapS」(= puntmapS)を作成するプロセス中に、どういうわけか2番目の配列を作成すると考えましたが、かなりの数があるはずなので、あなたのような専門家にこれを手伝ってもらうのが最善の考えだと思います私がおそらく気づいていないこれに対する解決策(そしてより効率的な)。

ここに画像の説明を入力

マッピング配列の作成:

var jPunten = JSON.parse(data); 
var puntmapS = []; 
var cardsS = []; 
var prevCard = jPunten[0].KARTNR; //previous card starts with the first card
cardsS[0] = jPunten[0].KARTNR;
//Generate point arrays
for (var i=0;i<jPunten.length;i++)
{
    if(prevCard!=jPunten[i].KARTNR){
        // (fill in cardsS, saves kartnr of the rows) gap-safety for if there should be gaps in the KARTNR's, currently only used for scounter
        cardsS[sCounter+1]=jPunten[i].KARTNR;sCounter++;
    } 
    //create an array under key jPunten[i].KARTNR, if it doesn't exist already
    puntmapS[sCounter] = puntmapS[sCounter] || []; // to avoid gaps we use sCounter instead of jPunten[i].KARTNR
    //then, assign your value
    console.log("S|| prevCard: "+ prevCard + " === " + jPunten[i].KARTNR +" (Kartnr)");

    puntmapS[sCounter][jPunten[i].BITNRK-1] = jPunten[i].STATDEV; //add point to row, -1 because array starts at 0

    console.log("S|| "+"  --SCounter: "+ sCounter + " bit: " + jPunten[i].BITNRK + "    = " + jPunten[i].STATDEV);
}

テーブルの作成:

if(puntmapS.length!=0){
    table = "<table style='margin-left:20px;font-size:80%;' border='1'><tbody><tr><th></th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>10</th><th>11</th><th>12</th><th>13</th><th>14</th><th>15</th><th>16</th></tr><tr><th>"+cardsS[0]+ " S</th>";
    for (var i=0;i<sCounter+1;i++)
    {
        for (var x=0;x<16;x++)
        {
            if(puntmapS[i][x]!=undefined)
            {
                table+= "<td><a href='#' onClick='alert(\""+puntmapS[i][x]+"\")'>"+puntmapS[i][x]+"</a></td>";
            }
            else
            {
                table += "<td style='background-color:#E6E6E6'><a href='#' onClick='alert(\"EMPTY\")'>&nbsp;</a></td>";
            }
        }
        if(i<(sCounter)){
            table+="</tr><tr><th>"+(cardsS[i+1])+" S</th>";
        }
    }
    table += "</tr></table>";
}

jPunten は次のようになります。

0
    Object { 0="LSZ09 ", 1="1", 2="S", more...} 
0
    "LSZ09 "    
1
    "1" 
2
    "S" 
3
    "0" 
4
    "1" 
5
    "0" 
6
    "I "    
BITNRK
    "1" 
BITSTATUS
    "0" 
DEVPKT
    "1"
KARTNR
    "0"
PKTTYP
    "S"
STATDEV
    "LSZ09 "    
TYPE
    "I "
4

2 に答える 2

0

キーが「PMSO3」で、値が位置の配列を含むオブジェクトである連想配列を作成できます。

map = [];
map['PMSO3'] = {
    label: 'PMS03-100',
    id: 124,
    positions: [{
        x: 2,
        y: 1
    }, {
        x: 2,
        y: 2
    }, {
        x: 3,
        y: 7
    }]
};

console.log('PMSO3 is located at these positions\n');
map['PMSO3'].positions.forEach(function(aPosition){
    console.log(aPosition.x+' '+aPosition.y+',');
});

JSFiddle

于 2013-11-08T20:00:55.097 に答える