在数组数组中,如何将每个值乘以不同的乘数
In an array of arrays how do I multiply each value by a different multiplier
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
到目前为止,在上面的代码中,我已经设法循环遍历外部数组,循环遍历内部数组并打印由 ****************** 分隔的值*。
我想知道将值乘以不同的行乘数并将每个结果记录在一行上的最佳方法是什么,间隔为 **************** **。
更新:
感谢大家的评论!你们都很棒!
似乎大多数评论都利用了乘数恰好是 10 的倍数这一事实。
如果乘数是唯一的,答案将如何变化:
- A 行乘以 21
- A 行乘以 45
- A 行乘以 56
- A 行乘以 67
- A 行乘以 87
从 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('******************');
}
}
我认为这是最短的答案:
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);
如果有多个表达式,或者函数体由非表达式语句组成,箭头函数体只需要用{ .. }括起来。如果只有一个表达式,并且您省略了周围的 { .. } ,则表达式前面有一个隐含的 return,如上一个片段所示。
你可以运行 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('******************');
})
})
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
到目前为止,在上面的代码中,我已经设法循环遍历外部数组,循环遍历内部数组并打印由 ****************** 分隔的值*。
我想知道将值乘以不同的行乘数并将每个结果记录在一行上的最佳方法是什么,间隔为 **************** **。
更新:
感谢大家的评论!你们都很棒!
似乎大多数评论都利用了乘数恰好是 10 的倍数这一事实。
如果乘数是唯一的,答案将如何变化:
- A 行乘以 21
- A 行乘以 45
- A 行乘以 56
- A 行乘以 67
- A 行乘以 87
从 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('******************');
}
}
我认为这是最短的答案:
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);
如果有多个表达式,或者函数体由非表达式语句组成,箭头函数体只需要用{ .. }括起来。如果只有一个表达式,并且您省略了周围的 { .. } ,则表达式前面有一个隐含的 return,如上一个片段所示。
你可以运行 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('******************');
})
})