2016-12-20 6 views
-5

私は、これら二つの配列を使用して、キーと値のペアを作成したいと出力はそれを行う方法langKeysjavascriptで2つの配列を使用してキー値のペアを作成する方法は?

ようにする必要があり二つの配列、keyscommonkeys

がありますか?

これは、これはこれは私が

var langKeys = { 
      'en-*':'en_US', 
      'es-*':'es_ES', 
      'pt-*':'pt_PT', 
      'fr-*':'fr_FR', 
      'de-*':'de_DE', 
      'ja-*':'ja_JP', 
      'it-*':'it_IT', 
      '*':'en_US' 
     }; 
+0

langKeysの最後のキー値ペア( '*': 'en_US')はどのように作成されました –

+7

何を試しましたか?ループとプロパティの使い方を知っていますか?うまくいかない場合でも試してみてください。 – Bergi

+1

シンプルなループを含む、かなり簡単で明白な単純な方法があります。さまざまなテクニックで同じことを行うために、より洗練された、エレガントな、またはファンキーな方法があるかもしれません。あなたのつまずきブロックはどこにありますか? – deceze

答えて

0

が配列の両方を反復するforループを使用して必要出力されるアレイ2

var commonKeys=['en-*','es-*', 'pt-*','fr-*','de-*','ja-*','it-*', '*'] 

あるアレイ1

var keys=['en_US','es_ES', 'pt_PT','fr_FR','de_DE','ja_JP','it_IT'] 

ありますarray [i]を使用してもう一方に1を代入します。ここで、iはインデックスpositを表す変数です値のイオン。

var keys = ['en_US', 'es_ES', 'pt_PT', 'fr_FR', 'de_DE', 'ja_JP', 'it_IT']; 
 

 

 
var commonKeys = ['en-*', 'es-*', 'pt-*', 'fr-*', 'de-*', 'ja-*', 'it-*', '*']; 
 

 
var langKeys = {}; 
 
for (var i = 0; i < keys.length; i++) { 
 
    var commonkey = commonKeys[i]; 
 
    langKeys[commonkey] = keys[i]; 
 
} 
 
console.log(JSON.stringify(langKeys));

1

これは、それは助けかもしれ試してみてください。

var langKeys = {}; 
    var keys=['en_US','es_ES', 'pt_PT','fr_FR','de_DE','ja_JP','it_IT'] 
    var commonKeys=['en-*','es-*', 'pt-*','fr-*','de-*','ja-*','it-*', '*'] 
    function createArray(element, index, array) { 
    langKeys[element]= keys[index]; 
    if(!keys[index]){ 
     langKeys[element]= keys[index-(commonKeys.length-1)]; 
    } 
    } 

    commonKeys.forEach(createArray); 
    console.info(langKeys); 
+2

これにはjQueryタグはありません。 'ready'関数は不必要で、jQueryなしでは動作しません。 – Liam

+0

はい、そこに関数を準備しておく必要はありません。私に思い出させるBtwありがとう:) –

3

JavaScriptは非常に多用途な言語なので、さまざまな方法で必要なことを行うことができます。あなたはこのように、配列を反復処理するための基本的なループを使用することができます。

var keys=['en_US','es_ES', 'pt_PT','fr_FR','de_DE','ja_JP','it_IT'] 
 
var commonKeys=['en-*','es-*', 'pt-*','fr-*','de-*','ja-*','it-*', '*'] 
 

 
var i; 
 
var currentKey; 
 
var currentVal; 
 

 
var result = {} 
 

 

 
for (i = 0; i < keys.length; i++) { 
 
    currentKey = commonKeys[i]; 
 
    currentVal = keys[i]; 
 
    result[currentKey] = currentVal;  
 
}

この例では、すべてのブラウザで動作します。

1

あなたは1つのアレイ上map()機能を使用することができますし、あなたが達成したい何

var keys=['en_US','es_ES', 'pt_PT','fr_FR','de_DE','ja_JP','it_IT']; 
 
var commonKeys=['en-*','es-*', 'pt-*','fr-*','de-*','ja-*','it-*', '*']; 
 

 
var output = keys.map(function(obj,index){ 
 
    var myobj = {}; 
 
    myobj[commonKeys[index]] = obj; 
 
    return myobj; 
 
}); 
 

 
console.log(output);

1

あなたのオブジェクトを作成する二つの配列からオブジェクトを作成することです。最初の配列には値が含まれ、2番目の配列にはオブジェクトのという名前のが含まれています。

javascriptと同様に、varialesで新しいプロパティを作成することができます。

objectName[expression] = value; // x = "age"; person[x] = 18

あなたは、単にこれを行うことができます。これはkeysが小さいか、同じサイズであれば両方の配列が実際に(同じサイズを持っている場合にのみ動作します

var keys=['en_US','es_ES', 'pt_PT','fr_FR','de_DE','ja_JP','it_IT']; 
var commonKeys=['en-*','es-*', 'pt-*','fr-*','de-*','ja-*','it-*', '*']; 

var langKeys = {}; 

var i; 
for (i=0; i < keys.length; i++) { 
    langKeys[commonKeys[i]] = keys[i]; 
} 

EDIT

commonKeysより)。

例のlangKeysの最後の要素については、ループの後に手動で追加する必要があります。

あなたが達成したかったのは多分もっと複雑でしたが、あなたの質問に情報がありません。

関連する問題