2012-06-25 5 views
10

는 보통 그러나 var max = Math.max.apply(Math, array);자바 스크립트 최대()는

을, 지금은 내가 가지고있는 각 라인있는 다차원 배열을 5 개의 열을 가지는 배열 특정 열의 최대 값을 찾는 비슷한 방법이 있습니까? 는 지금은하고 있어요 :

var maxFunc = function(data){ 
    var max = 0; 
    data.forEach(function(value){ 
     max = Math.max(max, value[0]); 
    }); 
    return max; 
}; 

내가이 일을 귀엽/간단한 방법이 있다면 궁금?

답변

12

나는 등을 작성합니다

Math.max.apply(Math, array.map(function(v) { 
    return v[0]; 
})); 

array.map이 경우 첫 번째 항목을 반환 피킹 논리에 따라 원래의 배열을 변형시킬 것이다. 변환 된 배열은이 Array.prototype.reduce을위한 훌륭한 응용 프로그램입니다 Math.max()

9

에 공급된다

max = data.reduce(function(previousVal, currentItem, i, arr) { 
    return Math.max(previousVal, currentItem[0]); 
}, Number.NEGATIVE_INFINITY); 

이 또한 data의 모든 값이 0보다 작은 경우 발생할 코드에서 버그를 방지 할 수 있습니다. 0 대신 Number.NEGATIVE_INFINITY과 비교해야합니다.

max = data.map(function (d) { 
    return d[0]; 
}).reduce(function (p, c, i, arr) { 
    return Math.max(p, c); 
}); 
:

또는, 최대 값으로 감소하기 전에 데이터를 정상화 할 수