2016-12-05 13 views
0

私はいくつかの配列を持っているので、それらをperson1、person2、person3およびperson4と呼びましょう。そして、1から4の間の引数を持つ関数を持っています。JavaScriptで配列名の最後の文字を検索するにはどうすればよいですか?

たとえば

var person1 = ["Steve", "McStevey"]; 
var person2 = ["Mike", "McMikey"]; 
var person3 = ["Dave", "McDavey"]; 
var person4 = ["Joe", "McJoey"]; 

を私は機能

getPerson(3); 

を実行し、関数は、引数に使用しています

function getPerson(x) {...} 

に引数を渡すかどうかを判断するためにその配列I探しているのは人です3。

+1

簡単な解決策は、スイッチケースまたは複数IFSを使用することであろう。 'if(x === 3)return person3; else if(x === 4){... ' – nem035

+0

2次元配列を使用していないのはなぜですか?そうすれば、渡す数字は単なるインデックスに過ぎず、可変数を扱う必要はありません。 –

+0

変数がどこに定義されているかによって異なります。グローバルであればwindow [x]を使うことができます。そうでなければevalを使う必要があります。はるかに良い解決策は、配列の配列と 'persons [x]'を持つことです。 –

答えて

5

あなたの人の配列の配列行います

var persons = [person1, person2, person3, person4];

persons[x]はその後、あなたは右の配列を与えるだろう。 Reduが述べたように、person1にはpersons[0]とアクセスできます。

+2

'persons [x-1]とすることができます。 – Redu

+0

person3にアクセスするには、 'persons [2]'を使用する必要がありますか?誤ったコードになる可能性があります... – Punit

+0

おそらく....しかし、これらの配列名は既に任意のようです。なぜそれをperson0、person1などにするのではないのですか?私は判断を下すのに十分な文脈を持っているとは思わない。 –

1

人物とIDでマップを定義する方がよいでしょう。

var persons = { 
    "1": ["Steve", "McStevey"], 
    "2": ["Mike", "McMikey"], 
    "3": ["Dave", "McDavey"], 
    "123": ["Joe", "McJoey"] 
} 

function getPersonById(id) { 
    return persons[id] 
} 
+0

これが最良の方法です。 –

0

また、配列を検索オブジェクトに入れることもできます。

var object = { 
 
    person1: ["Steve", "McStevey"], 
 
    person2: ["Mike", "McMikey"], 
 
    person3: ["Dave", "McDavey"], 
 
    person4: ["Joe", "McJoey"], 
 
}; 
 

 
function getPerson(x) { 
 
    return object['person' + x]; 
 
} 
 

 
console.log(getPerson(1));

関連する問題