JS数组按下标求和的问题
各位好,讨论一下JS数组求和的问题如以下demo,我们有一个中规中矩的数组,需要按下标位置进行求和。
各位大佬有没有更好的写法?谢谢交流。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
arr = [
,
,
,
,
];
// 需求是将数组内的全部数组,按下标位置求和
// 新建一个指定长度的空数组
let res = new Array(arr.length).fill(0);
// 遍历并相加
arr.forEach(row => {
row.forEach((e, i) => {
res += e
});
});
console.log(res)
</script>
</body>
</html> 个人思路:若arr中每个数组长度一致都是n,则可以先将arr打平后为数组arrFlat,遍历arrFlat,计算arrFlat下标与n求余 需求还是没懂比如举个例子 输入与输出 wangchuanlin 发表于 2022-9-30 09:34
需求还是没懂比如举个例子 输入与输出
上面代码跑一遍就知道了,数组按列求和 ```
var result = arr.map(function(index, item) {
return res;
});
console.log(result);
//
``` arr = [
,
,
,
,
];
var newArr = [].concat.apply([], arr);
var res = []
var len = arr.length
for (var i = 0; i < newArr.length; i++) {
if (res) {
res += newArr
} else {
res = 0
res += newArr
}
}
console.log(res) Takitooru 发表于 2022-9-30 10:29
```
var result = arr.map(function(index, item) {
return res;
我按大佬的方法,输出是
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
arr = [
,
,
,
,
];
// 需求是将数组内的全部数组,按下标位置求和
// // 新建一个指定长度的空数组
let res = new Array(arr.length).fill(0);
// // 遍历并相加
// arr.forEach(row => {
// row.forEach((e, i) => {
// res += e
// });
// });
var result = arr.map(function (index, item) {
return res;
});
console.log(result);
</script>
</body>
</html> cqwcns 发表于 2022-9-30 11:35
我按大佬的方法,输出是
噢,没注意忽略了你写的forEach循环,导致引用了上面的变量,所以结果是0000
改一下就好了,代码如下
```
arr = [
,
,
,
,
];
// 需求是将数组内的全部数组,按下标位置求和
var result = arr.map(function(index, item) {
return arr.reduce((p,e)=>p+e,0);
});
console.log(result);//
``` arr = [
,
,
,
,
]
console.log(arr.reduce((pre, cur) => pre.map((item, index) => item + cur))) 本帖最后由 abort 于 2022-9-30 19:52 编辑
const array = [, , ];
const result = array.flat().reduce((preValue, currentValue) => preValue+currentValue);
console.log(result);
页:
[1]
2