2016-07-01 19 views
0

私は、Array持っている:JSダブルforEachの予想外の結果

をArray.nestedArray.param = Array.nameを作るために

[ 
    { 
    name: 'Bob', 
    nestedArray: [ { param: '' }, { param: ''}, ... ] 
    }, 
    { 
    name: 'Alise', 
    nestedArray: [ { param: '' }, { param: ''}, ... ] 
    }, 
    { 
    name: 'Rony', 
    nestedArray: [ { param: '' }, { param: ''}, ... ] 
    }, 

    .... 

] 

必要性を私がやる:私は

Array.forEach((arrayElement) => { 
    arrayElement.nestedArray.forEach((nestedArrayElement) => { 
    console.log(arrayElement.name); 
    nestedArrayElement.param = arrayElement.name; 
    }); 
}); 

console.log(Array); 

チェック結果の配列を取得すべての入れ子にされた配列の中で 'Rony'(最後に反復された配列element)に等しいparamしかし、文字列

console.log(arrayElement.name); 

は常に期待値(「ボブ」、「ALISE」、「ロニー」)

私は読み書きにもインデックスアクセスを試みた返されます。

お願いします。私は間違って何をしていますか?

+0

あなたは何か他のことをする必要があります。あなたの正確なコードを実行すると、私は期待される結果を得ます – tymeJV

+0

あなたの配列は本当に 'Array'と呼ばれていますか? 'Array'がすでにネイティブのJavascriptで使用されているので、別のものを呼び出すことができます。 – jaybee

+0

再現できません:https://jsfiddle.net/barmar/sn8h5Lzk/1/ – Barmar

答えて

0

私が正しくあなたの質問を理解していた場合:

var arr = [ 
    { name: 'Bob', nestedArray: [{ param: '' }, { param: ''}] }, 
    { name: 'Alice', nestedArray: [{ param: '' }, { param: ''}] }, 
    { name: 'Rony', nestedArray: [{ param: '' }, { param: ''}] }, 
]; 

for (var i in arr) { 
    for (var j in arr[i].nestedArray) { 
    arr[i].nestedArray[j].param = arr[i].name; 
    } 
} 

編集: は@ napilnikさんのコメントごとにコードを修正しました。 for-inを使用していない限り、基本的な考え方は変更されず、結果を知った開発者が決定することができます。

+0

最後の文字列:arr [i] .nestedArray [j] .param = arr [i] .name; – napilnik

+0

元のコードの何が問題なのか、そしてどのように問題を解決したのかをよく分かるはずです。 – Barmar

+0

@napilnikおっと、ありがとうございました。一定! – Lifz

関連する問題