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

使用 JavaScript 返回 3 维数组中最大值的索引

使用 JavaScript 返回 3 维数组中最大值的索引

蛊毒传说 2021-10-14 12:55:24
我有一个这样的数组:[34, 12, 56][100,125,19][30,50,69]125 已经是最高值,它会返回索引 [1,1] 格式。意思是最高值 125 将返回第 1 行第 1 列我能够使用此代码获取数组中的索引var a = [0, 21, 22, 7, 12];var indexOfMaxValue = a.reduce((iMax, x, i, arr) => x > arr[iMax] ? i : iMax, 0);document.write("indexOfMaxValue = " + indexOfMaxValue); // prints "indexOfMaxValue = 2"
查看完整描述

3 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

这是我的方法。它将所有数组展平为更易于管理的数组,找到最大数量及其索引,然后使用一些数学计算它的位置。使用单个数组使这种计算变得更加容易。


const arr = [[34, 12, 56], [100,125,19], [30,50,69]];

const arr2 = [0, 21, 22, 7, 12];


function findHighest(arr) {


  // Get the number of columns

  const cols = arr.length;


  // Flatten out the arrays

  const tempArr = arr.flatMap(el => el);


  // Get the max number from the array

  const max = Math.max.apply(null, tempArr);


  // Find its index

  const indexMax = tempArr.findIndex(el => el === max);


  // Find the remainder (modulo) when you divide the index

  // by the number of columns

  const mod = indexMax % cols;


  // Return the final array output

  return [Math.floor(indexMax / cols), mod];

}


console.log(findHighest(arr))

console.log(findHighest(arr2))


查看完整回答
反对 回复 2021-10-14
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

这将提供预期的输出,但不确定是否是解决此问题的好方法:


var arr = [

    [34, 12, 56],

    [100, 125, 19],

    [30, 50, 69]

];

var maxValue, maxIndex;

arr.forEach((arr1, i) => {

    arr1.forEach((value, j) => {

        if (i == 0 && j == 0) {

            maxValue = value;

            maxIndex = [i, j]

        } else {

            if (maxValue < value) {

                maxValue = value;

                maxIndex = [i, j];

            }


        }


    });

});


console.log("Max Number Index", maxIndex);


查看完整回答
反对 回复 2021-10-14
?
繁花如伊

TA贡献2012条经验 获得超12个赞

如果你的意思是二维解决方案,试试这个。应该适用于动态长度数组这应该可以通过新的 forEach 扩展到新的维度


[100,125,19],

[30,50,69]];


maxIndex = [-1, -1];

maxElem = 0;

input.forEach(function(arr, row) {

    console.error(row);

    arr.forEach(function(e, col) {

    if( maxElem <= e ) {

        maxElem = e;

        maxIndex = [row, col];

    }

  })

})


console.log(maxIndex)


查看完整回答
反对 回复 2021-10-14
  • 3 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

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