使用Javascript在2d数组中查找具有最大编号的数组

时间:2015-09-16 19:18:09

标签: javascript arrays comparison

这是我的尝试,它运行正常,但我需要返回包含最大数字的数组,而不是最大数字本身。

另外,我想知道是否有一种方法可以使用深度等于比较2D数组中的内部数组。

function largestOfFour(arr) {
	for (var i = 0; i < arr.length; i++) {
		var largest = [0][0];
		for (var j = 0; j < arr[i].length; j++) {
			if (arr[i][j] > largest) {
				largest = arr[i][j];
			}
		}
	}

	return largest;

}

var largest = largestOfFour([
	[4, 5, 1, 3],
	[13, 27, 18, 26],
	[32, 35, 37, 39],
	[1000, 1001, 857, 1]
]);

console.log(largest);

4 个答案:

答案 0 :(得分:1)

只是为了使用新数组方法的乐趣:

  function largestOfFour(r){
    var biggest=Math.max.apply(null, r.join(",").split(",")); //merge arrays then find largest number in flat
    return  r.find( /./.test, RegExp("\\b"+biggest+"\\b") ); // find by matching element of sub-array to biggest flat array value
  }


  var largest=largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
  alert(largest); // shows "1000, 1001, 857, 1"

答案 1 :(得分:0)

创建另一个变量并在记下最大数字的同时存储arr[i]数组。如果您只需要最大的数组(或用它替换largest),则可以删除largestOrigin变量。

<强>的JavaScript

function largestOfFour(arr) {
    var largest = 0,
        largestOrigin = [];

    for(var i = 0; i < arr.length; i++){ 
        for (var j = 0; j < arr[i].length; j++) {
            if(arr[i][j] > largest){
                largest = arr[i][j];
                largestOrigin = arr[i];
            }
        }
    }
    return largestOrigin;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
// Returns  [1000, 1001, 857, 1]

JSFiddle (live demo)

答案 2 :(得分:0)

我还在研究那些freecodecamp篝火:)。这是我的解决方案:

function largestOfFour(arr) {
 var max = [];
   for(var i = 0; i < arr.length; i++){
     max.push(Math.max.apply(Math, arr[i]));
  }

  return max;
}

答案 3 :(得分:0)

function largestOfFour(arr) {
  return arr.map(n => Math.max(...n));
}