为了账号安全,请及时绑定邮箱和手机立即绑定

来自 Array 的周长上的数字总和

来自 Array 的周长上的数字总和

缥缈止盈 2022-11-11 13:09:06
我需要对这个二维数组的周长求和const arr = [[1,5,3,4],              [4,9,9,7],              [3,8,7,4]];答案是 79,但我不知道如何编写函数。
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

您可以访问所有值并检查索引是否为零或实际数组的长度减一。


const

    array = [[3, 8, 9, 7, 6], [6, 3, 8, 9, 7], [7, 6, 3, 8, 9]],

    perimeter = array.reduce((sum, row, i, a) =>

        row.reduce((s, v, j, b) =>

            s + (i === 0 || j === 0 || i + 1 === a.length || j + 1 === b.length

                ? v

                : 0,

            sum)

        ),

        0

    );


console.log(perimeter);


查看完整回答
反对 回复 2022-11-11
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

此函数将返回矩阵中的所有周长数字,然后对每个项目求平并求和。


const arr = [[3, 8, 9, 7, 6], [6, 3, 8, 9, 7], [7, 6, 3, 8, 9]];


var snail = function(arr) {

    let output = [];

    output.push(arr[0]);

    output.push(arr[arr.length - 1]);


    for(let item of arr){

        if(item != arr[0] && item != arr[arr.length - 1]){

            output.push(item[0]);

            output.push(item[item.length - 1]);

        }

    }


return output

}


const perimeter = snail(arr).flat(1);

const sum = perimeter.reduce((a, b) => a + b);

console.log(sum);


查看完整回答
反对 回复 2022-11-11
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

arr.map(ar => ar.reduce((a,b) => a + b, 0)).reduce((a,b) => a + b, 0)



查看完整回答
反对 回复 2022-11-11
  • 3 回答
  • 0 关注
  • 92 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信