2016-03-22 10 views
0

オブジェクトのプロパティにアクセスするのに時間がかかりましたが、問題を解決する方法が見つかりませんでした。定義済みの関数や変数のプロパティに動的にアクセスする

  1. ここでは、名前がarr1、arr2、arr3 ... arr10の配列が10個あるとします。 eval()を使用せずにすべての配列の長さにどのようにアクセスすればよいですか?私はforループでeval("arr" + i + ".length")としました。私はarr1["length"]の作品を知っているが、どのようにすべての配列の長さにアクセスするには?ループを使用して?
  2. split()splice()、またはpop()などの機能にどのようにアクセスすればよいでしょうか?
  3. arr1 = ["tab1", "tab2"]としましょう。ここでtab1, tab2は配列として後で定義されます。 tab1の長さにarr1からアクセスしたい場合、どうすればよいですか?私はまた、配列の定義された関数にアクセスしたいのですか?
+0

いくつかの例を追加してください。 –

+0

あなたの配列をラッピングオブジェクトに置き、ブラケット表記でアクセスしてください: 'obj ['arr' + i] .length' – hindmost

答えて

0

これらすべての配列を親objectまたはarrayに移動する必要があります。

また、evalを避けるべきです。 ARR2、ARR3 ... ARR10、私たちは私が名前ARR1の10個の配列を、持っているとしましょうWhy is using the JavaScript eval function a bad idea?

var arr1 = [1,2]; 
 
var arr2 = [1,2,3,4]; 
 
var arr3 = [1,2,3]; 
 
var arr4 = [1,2,6,4,3,6,]; 
 
var arr5 = [1]; 
 

 
var obj = { 
 
    array1: arr1, 
 
    array2: arr2, 
 
    array3: arr3, 
 
    array4: arr4, 
 
    array5: arr5 
 
} 
 

 
Object.keys(obj).forEach(function(o){ 
 
    document.write(obj[o].length + "<br/>"); 
 
});

0

を参照してください。どのように 私はeval()を使用せずにすべての配列の長さにアクセスするだろうか? 私はforループとeval( "arr" + i + ".length")でそれを行いました。私は arr1 ["length"]は動作するが、どのようにすべての配列の長さにアクセスするのか知っていますか? ループを使用していますか?これらの配列は、機能

var arr1 = []; 
var arr2 = []; 
その後

名前でそれらにアクセスすることはできません内部で次のように定義されている場合

オブジェクトをオブジェクトの内側に定義する必要があります。配列名を知っている場合は、これらの配列は、グローバルコンテキストで定義されている場合など

var obj = { 
    "arr1" : [1,2], 
    "arr2" : [2,3] 
} 

のために、あなたは、任意の外(ただし、

console.log(obj.arr1); 

または

console.log(obj["arr" + 1 ]); //1 can be replaced by iterating i 

を実行してアレイにアクセスすることができます関数)を呼び出すと、ウィンドウオブジェクト経由でアクセスできます。

window["arr1"] 

私たちはTAB1、TAB2が後で 配列として定義されていARR1 = [ "TAB1"、 "TAB2を"]、としましょう。 arr1からtab1の長さにアクセスしたい場合はどうすればよいですか 私はしますか?私はまた、配列の定義された関数にアクセスしたいのですか?

tab1が 'var tab1 = [];'と定義されている場合、名前でこれにアクセスすることはできません。

これらの配列をオブジェクト内に再度ラップする必要があります。

var obj = {"tab1" : []}; 

あなたは配列の配列は、あまりにも正常に動作し、事前にアレイの数がわからない場合、あなたは

console.log(obj[arr1[0]]); 
0

を実行してそれにアクセスすることができます

var arrays = [[1,2], [1,2,3,4], [1,2,3], [1,2,6,4,3,6,], [1]]; 
 

 
for (var i = 0; i < arrays.length; i++) { 
 
    console.log(arrays[i].length); 
 
    document.write('<p>[' + arrays[i] + '].length = ' + arrays[i].length + '</p>'); 
 
}

関連する問題