2016-06-12 97 views
2
var arrayOfArrays = [ 
    [1,2,3,4,5], /* row a */ 
    [1,2,3,4,5], /* row b */ 
    [1,2,3,4,5], /* row c */ 
    [1,2,3,4,5], /* row d */ 
    [1,2,3,4,5] /* row e */ 
]; 

for (var i = 0; i < arrayOfArrays.length; i++) { 
    var outterArr = arrayOfArrays[i]; 
    for (var x = 0; x < outterArr.length; x++) { 
    var innerArr = arrayOfArrays[x]; 
    console.log(innerArr[x]); 
    console.log('******************'); 
    } 
} 

正如你在上面看到的,我有一個多維數組。在陣列數組中,我如何將每個值乘以不同的乘數

我通過陣列試圖循環,並且乘以每個值根據它們在該行:

  • A行乘以10
  • A行乘以20
  • A排30
  • A行乘法乘以40
  • A行乘以50

到目前爲止,在上面的代碼中,我設法遍歷外部數組,循環遍歷內部數組並打印由******************定界的值。

我想知道什麼是最好的方式乘以不同的行乘數的價值觀和每個結果記錄在一行,由***************** *。

UPDATE:

感謝您的意見大家!你真了不起!

這似乎是大多數意見注意到一個事實,即乘數碰巧的答案會如何改變,如果乘數是獨特的10

倍數優勢:

  • A行乘以21
  • A行乘以45
  • A行乘以56
  • A行乘以67
  • 行由87
+0

你只需要乘或存儲結果? –

+0

以***********爲單位乘以並記錄結果 - 以類似的方式記錄內部數組值 – user6456392

+0

您是否想要將所有A行放在要乘以的內容的示例中通過? – Gabs00

回答

1

您可以在陣列上運行的forEach和乘基於索引:

var arrayOfArrays = [ 
 
    [1,2,3,4,5], /* row a */ 
 
    [1,2,3,4,5], /* row b */ 
 
    [1,2,3,4,5], /* row c */ 
 
    [1,2,3,4,5], /* row d */ 
 
    [1,2,3,4,5] /* row e */ 
 
]; 
 

 
arrayOfArrays.forEach((a, i) => { 
 
    let mult = ((i + 1) * 10) 
 
    a.forEach((num) => { 
 
    num = num * mult 
 
    console.log(num) 
 
    console.log('******************'); 
 
    }) 
 
})

+0

如果我忽略乘數恰好是10的倍數,該怎麼辦?可以說乘數是:21,45,56,67,87; – user6456392

+0

因爲你已經有三個這個問題的答案,所以你可能會有更多的運氣,並且更加符合社區的指導方針,把它作爲一個新問題發佈。 –

+0

謝謝,我會做的。 – user6456392

1

乘法從outterArr[x]採取值,因爲outterArr是行。

var arrayOfArrays = [ 
 
    [1,2,3,4,5], /* row a */ 
 
    [1,2,3,4,5], /* row b */ 
 
    [1,2,3,4,5], /* row c */ 
 
    [1,2,3,4,5], /* row d */ 
 
    [1,2,3,4,5] /* row e */ 
 
]; 
 

 
for (var i = 0; i < arrayOfArrays.length; i++) { 
 
    var outterArr = arrayOfArrays[i]; 
 
    for (var x = 0; x < outterArr.length; x++) { 
 
     var innerVal = outterArr[x];   // change this to outterArr[x] 
 
     //    ^^^^^^^^^^^^ 
 
     console.log(innerVal * (i + 1) * 10); // multiply value 
 
     console.log('******************'); 
 
    } 
 
}

+0

這真棒! – user6456392

0

我認爲這是最短的答案:

var arrayOfArrays = [ 
 
    [1,2,3,4,5], /* row a */ 
 
    [1,2,3,4,5], /* row b */ 
 
    [1,2,3,4,5], /* row c */ 
 
    [1,2,3,4,5], /* row d */ 
 
    [1,2,3,4,5] /* row e */ 
 
]; 
 

 
var newArr = arrayOfArrays.map((v,i) => v.map(x=> x *= (i+1) * 10)); 
 

 
console.log(newArr);

箭頭函數體只需要通過{..}被封閉,如果有更多的而不是一個表達式,或者如果主體由非表達式語句組成。如果只有一個表達式,並且省略了周圍的{..},則表達式前面會有一個隱含的返回值,如前面的代碼片段所示。

+2

可能是最短的,但從初學者的角度來看,這很可能完全混淆 – charlietfl

+0

這是真的,但我愛ES6 - 我根本無法抗拒 – Przemek