2016-07-16 10 views
1

オブジェクトのプロパティである配列にアクセスしようとしていますが、プロパティ名からしかアクセスできません。JavaScriptのオブジェクトのプロパティである配列にアクセスできません

var obj = {}; 

obj.line0=[0,0]; 
obj.line1=[0,50]; 

var pointsLenght = 8; 

//things above are just test case sandbox representing small amount of real data 

var createPoints = function(obj){ 
    var i; 
    for(var x in obj){ 
     if (obj.hasOwnProperty(x)) { 
      for (i=0;i<pointsLenght;i++){ 
       if (i%2==0){ 
        x[i]=i*50; 
       } 
       else { 
        x[i]=x[1]; 
       } 
       console.log(i+" element of array "+x+" is equal "+x[i]); 
      } 
     } 
    } 
    return obj; 
} 

そして、これは私がコンソール(Firefoxの47.0)で取得されるものです:

0 element of array line0 is equal l 
1 element of array line0 is equal i 
2 element of array line0 is equal n 
3 element of array line0 is equal e 
4 element of array line0 is equal 0 
5 element of array line0 is equal undefined 
6 element of array line0 is equal undefined 
7 element of array line0 is equal undefined 

アレイにアクセスする方法は?

+0

? – charlietfl

答えて

1

操作[x]はOBJを行う必要があり、同じようにあなたのコードを記述し、そのプロパティ名に属します。 コードをチェックしてください:結果を期待されているものを明確にするため

var obj = {}; 
 

 
obj.line0 = [0, 0]; 
 
obj.line1 = [0, 50]; 
 

 
var pointsLenght = 8; 
 

 
//things above are just test case sandbox representing small amount of real data 
 

 
var createPoints = function(obj) { 
 
    var i, elem; 
 
    for (var x in obj) { 
 
    if (obj.hasOwnProperty(x)) { 
 
     elem = obj[x]; 
 
     for (i = 0; i < pointsLenght; i++) { 
 
     elem[i] = (i % 2 == 0) ? (i * 50) : elem[1]; 
 
     console.log(i + " element of array " + elem + " is equal " + elem[i]); 
 
     } 
 
    } 
 
    } 
 
    return obj; 
 
} 
 
createPoints(obj);

2

プロパティ名(文字列)にアクセスしています。アレイにアクセスするために("LINE0""LINE1"は)

var createPoints = function(obj){ 
    var i; 
    for(var x in obj){ 
     if (obj.hasOwnProperty(x)) { 
      for (i=0;i<pointsLenght;i++){ 
       if (i%2==0){ 
        obj[x][i]=i*50; 
        //obj[x] will give you the array belongs to the property x 
       } 
       else { 
        obj[x][i]= obj[x][1]; 
        //obj[x] will give you the array belongs to the property x 
       } 
       console.log(i+" element of array "+x+" is equal "+ obj[x][i]); 
      } 
     } 
    } 
    return obj; 
} 
+0

あなたのソリューションは完璧に動作します、私はちょうど少しエレガントなAyan答えを選択しました。 – jazzgot

関連する問題