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('******************');
}
}
如上所示,我有一个多维数组。
我正在尝试遍历数组,并根据它们所在的行乘以每个值:
到目前为止,在上面的代码中我已经设法循环遍历外部数组,循环遍历内部数组并打印由******************分隔的值。
我想知道将值乘以不同的行乘数并将每个结果记录在一行上的最佳方法是什么,间隔为****************** 。
更新:
感谢大家的评论!你真是太棒了!
似乎大多数评论都利用了乘数恰好是10的倍数这一事实。
如果乘数是唯一的,答案会如何变化:
答案 0 :(得分: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('******************');
}
}
&#13;
答案 1 :(得分: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('******************');
})
})
&#13;
答案 2 :(得分: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);
&#13;
如果有多个表达式,或者正文由非表达式语句组成,则箭头函数的主体只需要被{..}括起来。如果只有一个表达式,并且省略了周围的{..},则表达式前面会有一个隐含的返回值,如上一个片段所示。