programing

JavaScript에서 배열의 최소/최대 요소를 찾습니다.

procenter 2023. 1. 3. 22:35
반응형

JavaScript에서 배열의 최소/최대 요소를 찾습니다.

JavaScript 배열의 최소 또는 최대 요소를 쉽게 얻을 수 있는 방법은 무엇입니까?

의사 코드의 예:

let array = [100, 0, 50]

array.min() //=> 0
array.max() //=> 100

대신 /을 Math.min사용할 기본 제공 어레이 개체를 추가하는 것은 어떻습니까?

Array.prototype.max = function() {
  return Math.max.apply(null, this);
};

Array.prototype.min = function() {
  return Math.min.apply(null, this);
};

let p = [35,2,65,7,8,9,12,121,33,99];

console.log(`Max value is: ${p.max()}` +
  `\nMin value is: ${p.min()}`);

여기 JSFiddle이 있습니다.

할 수 ( 참조 "마지막으로 "마지막으로", "마지막으로", "마지막으로", "마지막으로", "마지막으로", "마지막으로", "마지막으로", "마지막으로", "마지막으로", "마지막으로", "마지막으로", "마지막으로"를 이 더 할 수 있습니다.applyMath.xxx()"CHANGE: " "CHANGE: "CHANGE:

var min = Math.min.apply(null, arr),
    max = Math.max.apply(null, arr);

또는 브라우저가 ECMAScript 6을 지원하는 경우 확장 구문을 사용하여apply★★★★

var min = Math.min( ...arr ),
    max = Math.max( ...arr );
var max_of_array = Math.max.apply(Math, array);

상세한 것에 대하여는, http://aaroncrane.co.uk/2008/11/javascript_max_api/ 를 참조해 주세요.

배열' 의 경우, '10' 요소, '10' 요소,Math.min ★★★★★★★★★★★★★★★★★」Math.maxnodej Node . js 음음음 。

RangeError: 최대 콜스택 크기를 초과했습니다.

보다 견고한 솔루션은 모든 요소를 콜스택에 추가하는 것이 아니라 어레이를 전달하는 것입니다.

function arrayMin(arr) {
  return arr.reduce(function (p, v) {
    return ( p < v ? p : v );
  });
}

function arrayMax(arr) {
  return arr.reduce(function (p, v) {
    return ( p > v ? p : v );
  });
}

속도가 걱정되는 경우 다음 코드는 다음 코드보다 최대 3배 빠릅니다.Math.max.apply제 컴퓨터에 있어요.https://jsben.ch/JPOyL 를 참조해 주세요.

function arrayMin(arr) {
  var len = arr.length, min = Infinity;
  while (len--) {
    if (arr[len] < min) {
      min = arr[len];
    }
  }
  return min;
};

function arrayMax(arr) {
  var len = arr.length, max = -Infinity;
  while (len--) {
    if (arr[len] > max) {
      max = arr[len];
    }
  }
  return max;
};

배열에 숫자 대신 문자열이 포함되어 있는 경우 숫자로 강제해야 합니다.아래 코드는 그렇게 하지만, 내 기계에서는 최대 10배까지 느려집니다.https://jsben.ch/uPipD 를 참조해 주세요.

function arrayMin(arr) {
  var len = arr.length, min = Infinity;
  while (len--) {
    if (Number(arr[len]) < min) {
      min = Number(arr[len]);
    }
  }
  return min;
};

function arrayMax(arr) {
  var len = arr.length, max = -Infinity;
  while (len--) {
    if (Number(arr[len]) > max) {
      max = Number(arr[len]);
    }
  }
  return max;
};

확산 연산자 사용(ES6)

Math.max(...array)  // The same with "min" => Math.min(...array)

const array = [10, 2, 33, 4, 5];

console.log(
  Math.max(...array)
)

dr;dr

// For regular arrays:
var max = Math.max(...arrayOfNumbers);

// For arrays with tens of thousands of items:
let max = testArray[0];
for (let i = 1; i < testArrayLength; ++i) {
  if (testArray[i] > max) {
    max = testArray[i];
  }
}

MDN 솔루션

의 공식 MDN 문서에서는 이미 이 문제를 다루고 있습니다.

다음 함수는 Function.protype.apply()사용하여 숫자 배열의 최대 요소를 찾습니다. getMaxOfArray([1, 2, 3]) Math.max(1, 2, 3) , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , .getMaxOfArray()모든 크기의 프로그래밍 방식으로 구성된 어레이에서 사용할 수 있습니다.

function getMaxOfArray(numArray) {
    return Math.max.apply(null, numArray);
}

또는 새로운 확산 연산자를 사용하면 어레이의 최대값을 얻는 것이 훨씬 쉬워집니다.

var arr = [1, 2, 3];
var max = Math.max(...arr);

어레이의 최대 크기

MDN에 따르면apply및 확산 솔루션의 최대 인수 수 제한은 65536이었습니다.

단, 이 방법을 사용하면 JavaScript 엔진의 인수 길이 제한을 초과할 위험이 있습니다.인수가 너무 많은 함수를 적용하면(수만 개 이상의 인수를 생각할 수 있음) 그 결과는 엔진에 따라 달라집니다(JavaScriptCore의 인수 제한은 하드코드 65536).이는 제한(실제로는 과도하게 큰 스택 동작의 성질)이 지정되지 않았기 때문입니다.일부 엔진은 예외를 발생시킵니다.더 치명적인 것은 다른 사용자가 실제로 적용된 함수에 전달되는 인수 수를 임의로 제한한다는 것입니다.후자의 경우를 설명하자면, 이러한 엔진에 4개의 인수의 제한이 있는 경우(물론 실제 한계는 상당히 높음), 이는 마치 완전한 배열이 아닌 위의 예에서 5, 6, 2, 3 인수가 적용되도록 전달된 것과 같습니다.

다른 솔루션에 비해 성능이 좋지 않은 하이브리드 솔루션도 제공합니다.상세한 것에 대하여는, 이하의 퍼포먼스 테스트를 참조해 주세요.

2019년의 실제 제한은 콜스택의 최대 크기입니다.최신 Cromium 기반 데스크톱 브라우저의 경우 이는 최소/최대 검색됩니다.apply, 숫자만 사용할 수 있는 어레이의 최대 크기는 ~120000입니다.그 위에 스택오버플로우가 발생하여 다음 오류가 발생합니다.

RangeError: 최대 콜스택 크기를 초과했습니다.

이하의 스크립트(이 블로그 투고에 근거)를 사용하고, 그 에러를 검출하는 것으로, 사용의 특정의 환경에 대한 제한을 계산할 수 있습니다.

경고!이 스크립트를 실행하는 데 시간이 걸리고 시스템 성능에 따라 브라우저/시스템이 느려지거나 크래쉬할 수 있습니다.

let testArray = Array.from({length: 10000}, () => Math.floor(Math.random() * 2000000));
for (i = 10000; i < 1000000; ++i) {
  testArray.push(Math.floor(Math.random() * 2000000));
  try {
    Math.max.apply(null, testArray);
  } catch (e) {
    console.log(i);
    break;
  }
}

대규모 어레이에서의 퍼포먼스

Escape Netscape 코멘트의 테스트에 근거해, 100,000개의 아이템이 있는 랜덤한 수만의 어레이로 5개의 다른 메서드를 테스트하는 벤치마크를 작성했습니다.

2019년에는 표준 루프(BTW는 크기 제한이 없음)가 어디에서나 가장 빠른 것으로 나타나며, 그 직후에 확산이 이루어지며, 그 후 MDN의 하이브리드 솔루션도 그 뒤를 잇고 있습니다.reduce제일 느려요.

어느 정도 퍼진 것을 제외하고는 거의 모든 테스트에서 동일한 결과가 나왔습니다.

개의 , 하고, 가 남습니다.reduce더 느리다고.

JSPerf 벤치마크

어레이의 최소/최대 항목을 찾기 위한 다양한 솔루션에 대한 jsperf.com 벤치마크 결과

JSBen 벤치마크

어레이의 최소/최대 항목을 찾기 위한 다양한 솔루션에 대한 jsben.com 벤치마크 결과

JSBench.me 벤치마크

어레이의 최소/최대 항목을 찾기 위한 다양한 솔루션에 대한 jsbench.me 벤치마크 결과

벤치마크 소스 코드

var testArrayLength = 100000
var testArray = Array.from({length: testArrayLength}, () => Math.floor(Math.random() * 2000000));

// ES6 spread
Math.min(...testArray);
Math.max(...testArray);

// reduce
testArray.reduce(function(a, b) {
  return Math.max(a, b);
});
testArray.reduce(function(a, b) {
  return Math.min(a, b);
});

// apply
Math.min.apply(Math, testArray);
Math.max.apply(Math, testArray);

// standard loop
let max = testArray[0];
for (let i = 1; i < testArrayLength; ++i) {
  if (testArray[i] > max) {
    max = testArray[i];
  }
}

let min = testArray[0];
for (let i = 1; i < testArrayLength; ++i) {
  if (testArray[i] < min) {
    min = testArray[i];
  }
}

// MDN hibrid soltuion
// Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply#Using_apply_and_built-in_functions
function minOfArray(arr) {
  var min = Infinity;
  var QUANTUM = 32768;

  for (var i = 0, len = arr.length; i < len; i += QUANTUM) {
    var submin = Math.min.apply(null, arr.slice(i, Math.min(i + QUANTUM, len)));
    min = Math.min(submin, min);
  }

  return min;
}

minOfArray(testArray);

function maxOfArray(arr) {
  var max = -Infinity;
  var QUANTUM = 32768;

  for (var i = 0, len = arr.length; i < len; i += QUANTUM) {
    var submax = Math.max.apply(null, arr.slice(i, Math.max(i + QUANTUM, len)));
    max = Math.max(submax, max);
  }

  return max;
}

maxOfArray(testArray);

나처럼 편집증적이라면Math.max.apply(MDN에 따라 대규모 어레이를 지정하면 오류가 발생할 수 있음) 다음 절차를 수행합니다.

function arrayMax(array) {
  return array.reduce(function(a, b) {
    return Math.max(a, b);
  });
}

function arrayMin(array) {
  return array.reduce(function(a, b) {
    return Math.min(a, b);
  });
}

또는 ES6의 경우:

function arrayMax(array) {
  return array.reduce((a, b) => Math.max(a, b));
}

function arrayMin(array) {
  return array.reduce((a, b) => Math.min(a, b));
}

어나니머스 함수는 사용하지 ).Math.max.bind(Math)reducea ★★★★★★★★★★★★★★★★★」b 기능에도 대응하고 있습니다.i자체에 가 있기 「」에 을 걸려고 않는 것을 가 있습니다.max것들그

대체 방법


Math.min ★★★★★★★★★★★★★★★★★」Math.max아이템 컬렉션에서 최소 아이템과 최대 아이템을 추출하는 훌륭한 방법이지만 그에 따라 발생할 수 있는 몇 가지 충치를 알아두는 것이 중요합니다.

다수의 아이템(사용자의 브라우저에 따라 다르지만 최대 10인치 아이템)을 포함한 어레이와 함께 사용하면 크래시가 발생하고 다음 오류 메시지가 표시될 수 있습니다.

const arr = Array.from(Array(1000000).keys());
Math.min(arr);
Math.max(arr);

Uncaughed RangeError: 최대 콜 스택 크기를 초과했습니다.


는 " " "를 할 수 있습니다.NaN그것이 오류를 처리하는 더 나은 방법일 수도 있지만, 아직 문제가 해결되지 않았습니다.

대신 다음과 같은 것을 사용해 보십시오.

function maxValue(arr) {
  return arr.reduce((max, val) => max > val ? max : val)
}

또는 실행 시간이 향상됩니다.

function maxValue(arr) {
  let max = arr[0];

  for (let val of arr) {
    if (val > max) {
      max = val;
    }
  }
  return max;
}

또는 최소값과 최대값을 모두 얻으려면:

function getMinMax(arr) {
  return arr.reduce(({min, max}, v) => ({
    min: min < v ? min : v,
    max: max > v ? max : v,
  }), { min: arr[0], max: arr[0] });
}

또는 보다 뛰어난 런타임*:

function getMinMax(arr) {
  let min = arr[0];
  let max = arr[0];
  let i = arr.length;
    
  while (i--) {
    min = arr[i] < min ? arr[i] : min;
    max = arr[i] > max ? arr[i] : max;
  }
  return { min, max };
}

1,의 아이템으로 1,000,000개:
참고로 제1함수(내 기계)의 런타임은 15.84ms, 제2함수는 4.32ms였습니다.

두 가지 방법이 더 짧고 쉽습니다.

let arr = [2, 6, 1, 0]

방법 1:

let max = Math.max.apply(null, arr)

방법 2:

let max = arr.reduce(function(a, b) {
    return Math.max(a, b);
});

.apply때를 들어, 값을 리스트로 하는 경우입니다.

함수는 0 이상의 숫자 중 가장 큰 숫자를 반환합니다.

Math.max(10, 20); // 20
Math.max(-10, -20); // -10
Math.max(-10, 20); // 20

Math.max()메서드에서는 어레이를 전달할 수 없습니다.가장 큰 값을 얻어야 하는 값 목록이 있는 경우 Function.protype.apply()사용하여 이 함수를 호출합니다.

Math.max.apply(null, [10, 20]); // 20
Math.max.apply(null, [-10, -20]); // -10
Math.max.apply(null, [-10, 20]); // 20

그러나 ECMAScript 6에서는 다음과 같이 확산 연산자를 사용할 수 있습니다.

확산 연산자를 사용하면 여러 인수(함수 호출용) 또는 여러 요소(배열 리터럴용)가 예상되는 장소에서 식을 확장할 수 있습니다.

확산 연산자를 사용하면 위의 내용을 다음과 같이 다시 작성할 수 있습니다.

Math.max(...[10, 20]); // 20
Math.max(...[-10, -20]); // -10
Math.max(...[-10, 20]); // 20

variadic 연산자를 사용하여 함수를 호출할 때 추가 값을 추가할 수도 있습니다.

Math.max(...[10, 20], 50); // 50
Math.max(...[-10, -20], 50); // 50

보너스:

에서 Spread의 코드로 하여 새로운 할 수 .push,splice 등등.

let foo = ['b', 'c'];
let bar = ['a', ...foo, 'd', 'e']; // ['a', 'b', 'c', 'd', 'e']

어레이 유형을 확장하면 됩니다.

Array.max = function( array ){
    return Math.max.apply( Math, array );
};
Array.min = function( array ){
    return Math.min.apply( Math, array );
}; 

여기서부터 (John Resig에 의해)

Array'는 '원소', '원소'를 합니다.Array 함수 형형 prototype prototype prototypereduce:

A = [4,3,-9,-2,2,1];
A.reduce((min, val) => val < min ? val : min, A[0]); // returns -9

또는 JavaScript에 내장된 Math를 사용합니다.최소() 함수(@Tenflex 감사):

A.reduce((min,val) => Math.min(min,val), A[0]);

으로, 「」가 설정됩니다.min로로 합니다.A[0] 를를니 for for를 확인합니다.A[1]...A[n] min.A[i] < minmin is is 、 에 、 is 、 is 、 is is 。A[i] " " "는 " "로 이동합니다.min결과로서 반환됩니다.

편집: 최소값 위치 포함:

A = [4,3,-9,-2,2,1];
A.reduce((min, val) => val < min._min ? {_min: val, _idx: min._curr, _curr: min._curr + 1} : {_min: min._min, _idx: min._idx, _curr: min._curr + 1}, {_min: A[0], _idx: 0, _curr: 0}); // returns { _min: -9, _idx: 2, _curr: 6 }

간결하고 현대적인 솔루션에서는 현재 최소값과 최대값을 추적하여 어레이를 한 번만 반복할 수 있습니다(최적).여기서는 간결성을 위해 임무를 파괴하는 것이 사용됩니다.

let array = [100, 0, 50];
let [min, max] = array.reduce(([prevMin,prevMax], curr)=>
   [Math.min(prevMin, curr), Math.max(prevMax, curr)], [Infinity, -Infinity]);
console.log("Min:", min);
console.log("Max:", max);

최소값과 최대값 중 하나만 찾으려면 거의 동일한 방법으로 감소 연산을 수행할 수 있지만 이전 최적값만 추적하면 됩니다..apply어레이가 스택에 비해 너무 커도 오류가 발생하지 않기 때문입니다.

const arr = [-1, 9, 3, -6, 35];

//Only find minimum
const min = arr.reduce((a,b)=>Math.min(a,b), Infinity);
console.log("Min:", min);//-6

//Only find maximum
const max = arr.reduce((a,b)=>Math.max(a,b), -Infinity);
console.log("Max:", max);//35

은 이미 몇 가지 했습니다.Array.prototype 것은 이 '아까운지'가 되어야 를 명확히 Math.min.apply( Math, array ) ★★★★★★★★★★★★★★★★★」Math.min.apply( null, array )그럼 어떤 콘텍스트를 사용해야 할까요?

「 」 「 」nullapply글로벌오브젝트(「」)가window오브젝트)를 클릭합니다.:Math 해결책이지만 해서 합격하는 은 나쁘지 않다.null를 들면요, 들면요.null할 때 문제가 생길 수 있습니다.Math.max★★★★

// decorate Math.max
(function (oldMax) {
    Math.max = function () {
        this.foo(); // call Math.foo, or at least that's what we want

        return oldMax.apply(this, arguments);
    };
})(Math.max);

Math.foo = function () {
    print("foo");
};

Array.prototype.max = function() {
  return Math.max.apply(null, this); // <-- passing null as the context
};

var max = [1, 2, 3].max();

print(max);

의 경우는 입니다.왜냐하면, 이 경우는 예외입니다.this.foo 평가하겠습니다.window.foo, 「」)undefinednullMath, 모든 것이 예상대로 동작해, 문자열 「foo」가 화면에 인쇄됩니다(Mozilla Rhino 를 사용해 테스트했습니다).

도 꾸미지 할 수 .Math.max 지나치면, 지나가고, 지나가고, 지나가고, 지나가고,null문제없이 동작합니다.

또 하나의 방법:

var arrayMax = Function.prototype.apply.bind(Math.max, null);

사용방법:

var max = arrayMax([2, 5, 1]);

아무도 축소 기능에 대해 언급하지 않은 것이 놀랍습니다.

var arr = [1, 10, 5, 11, 2]

var b = arr.reduce(function(previous,current){ 
                      return previous > current ? previous:current
                   });

b => 11
arr => [1, 10, 5, 11, 2]

https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Math/max

function getMaxOfArray(numArray) {
  return Math.max.apply(null, numArray);
}

var arr = [100, 0, 50];
console.log(getMaxOfArray(arr))

이건 나한테 효과가 있었어요.

이것은 당신의 목적에 맞을 수 있습니다.

Array.prototype.min = function(comparer) {

    if (this.length === 0) return null;
    if (this.length === 1) return this[0];

    comparer = (comparer || Math.min);

    var v = this[0];
    for (var i = 1; i < this.length; i++) {
        v = comparer(this[i], v);    
    }

    return v;
}

Array.prototype.max = function(comparer) {

    if (this.length === 0) return null;
    if (this.length === 1) return this[0];

    comparer = (comparer || Math.max);

    var v = this[0];
    for (var i = 1; i < this.length; i++) {
        v = comparer(this[i], v);    
    }

    return v;
}

배열 = [267, 306, 108]로 하고 최장 = Math.max(...array)로 합니다.

심플하고 알기 쉬운 솔루션을 소개하려고 합니다.

최소값:

var arr = [3, 4, 12, 1, 0, 5];
var min = arr[0];
for (var k = 1; k < arr.length; k++) {
  if (arr[k] < min) {
    min = arr[k];
  }
}
console.log("Min is: " + min);

또한 최대:

var arr = [3, 4, 12, 1, 0, 5];
var max = arr[0];
for (var k = 1; k < arr.length; k++) {
  if (arr[k] > max) {
    max = arr[k];
  }
}
console.log("Max is: " + max);

배열' 의 경우, '10' 요소, '10' 요소,Math.min ★★★★★★★★★★★★★★★★★」Math.max"node.js" "RangeError" ("RangeError") 입니다.

대규모 어레이의 경우 빠르고 지저분한 솔루션은 다음과 같습니다.

Array.prototype.min = function() {
    var r = this[0];
    this.forEach(function(v,i,a){if (v<r) r=v;});
    return r;
};

max 와 min 의 함수와는 별도로, 사용하는 또 다른 함수는 sort() 의 빌트인 함수입니다.

const nums = [12, 67, 58, 30].sort((x, y) => 
x -  y)
let min_val = nums[0]
let max_val = nums[nums.length -1]

같은 문제가 있었습니다.어레이의 최소값과 최대값을 구해야 했는데 놀랍게도 어레이에 내장된 함수는 없었습니다.많은 책을 읽은 후, 저는 "Top 3" 솔루션을 직접 테스트해보기로 결정했습니다.

  1. 이산 솔루션: 어레이의 모든 요소를 현재 최대값 및/또는 최소값과 비교하기 위한 FOR 루프.
  2. APPLY 솔루션: apply(null,array)를 사용하여 어레이를 Math.max 및/또는 Math.min 내부 함수로 전송합니다.
  3. 축소 솔루션: reduce(함수)를 사용하여 어레이의 모든 요소에 대한 검사를 반복합니다.

테스트 코드는 다음과 같습니다.

function GetMaxDISCRETE(A)
{   var MaxX=A[0];

    for (var X=0;X<A.length;X++)
        if (MaxX<A[X])
            MaxX=A[X];

    return MaxX;
}

function GetMaxAPPLY(A)
{   return Math.max.apply(null,A);
}

function GetMaxREDUCE(A)
{   return A.reduce(function(p,c)
    {   return p>c?p:c;
    });
}

어레이 A는 100,000개의 랜덤 정수 번호로 채워져 있으며 각 함수는 Windows Vista 탑재 인텔 Pentium 4 2.99GHz 데스크톱 상의 Mozilla Firefox 28.0에서 10,000회 실행되었습니다.시간은 performance.now() 함수에 의해 취득되는 초 단위입니다.결과는 다음과 같습니다. 3개의 소수 자릿수와 표준 편차는 다음과 같습니다.

  1. 이산 솔루션: 평균=0.199s, sd=0.078
  2. 적용 솔루션: 평균=3.571s, sd=0.487
  3. 축소 솔루션: 평균=0.350s, sd=0.044

REDURE 솔루션은 이산 솔루션보다 117% 느렸습니다.APPLY 솔루션은 이산 솔루션보다 2,118% 느렸습니다.또한 Peter가 관찰한 바와 같이 대규모 어레이(약 100만 개 이상의 요소)에서는 작동하지 않습니다.

또한 테스트를 완료하기 위해 확장 이산 코드를 테스트했습니다.

var MaxX=A[0],MinX=A[0];

for (var X=0;X<A.length;X++)
{   if (MaxX<A[X])
        MaxX=A[X];
    if (MinX>A[X])
        MinX=A[X];
}

타이밍: 평균=0.218s, sd=0.094

따라서 단순한 개별 솔루션보다 35% 느리지만 최대값과 최소값을 동시에 가져옵니다(다른 솔루션에서는 최소 2배 이상 소요됩니다).OP에 두 값이 모두 필요하게 되면 이산 솔루션이 최선의 선택입니다(최대값 계산용과 최소값 계산용 두 개의 개별 함수에서도 두 번째로 우수한 REDURE 솔루션보다 성능이 우수합니다).

길을 따라가며 반복하세요.

var min = null;
var max = null;
for (var i = 0, len = arr.length; i < len; ++i)
{
    var elem = arr[i];
    if (min === null || min > elem) min = elem;
    if (max === null || max < elem) max = elem;
}
alert( "min = " + min + ", max = " + max );

어레이에 요소가 없는 경우 최소/최대값이 null인 상태로 유지됩니다.배열에 요소가 있는 경우 최소값과 최대값을 한 번에 설정합니다.

하려면 , 「」를 .range재사용 및 가독성 향상을 위해 위의 방법을 사용합니다.http://jsfiddle.net/9C9fU/에서 작업 중인 바이올린을 참조하십시오.

Array.prototype.range = function() {

    var min = null,
        max = null,
        i, len;

    for (i = 0, len = this.length; i < len; ++i)
    {
        var elem = this[i];
        if (min === null || min > elem) min = elem;
        if (max === null || max < elem) max = elem;
    }

    return { min: min, max: max }
};

로서 사용되다

var arr = [3, 9, 22, -7, 44, 18, 7, 9, 15];

var range = arr.range();

console.log(range.min);
console.log(range.max);

프로젝트의 모든 위치에서 다음 기능을 사용할 수 있습니다.

function getMin(array){
    return Math.min.apply(Math,array);
}

function getMax(array){
    return Math.max.apply(Math,array);
}

그런 다음 어레이를 통과하는 함수를 호출할 수 있습니다.

var myArray = [1,2,3,4,5,6,7];
var maximo = getMax(myArray); //return the highest number

다음의 코드가 유효합니다.

var valueList = [10,4,17,9,3];
var maxValue = valueList.reduce(function(a, b) { return Math.max(a, b); });
var minValue = valueList.reduce(function(a, b) { return Math.min(a, b); });

숫자 대신 개체를 포함하는 배열의 경우:

arr = [
  { name: 'a', value: 5 },
  { name: 'b', value: 3 },
  { name: 'c', value: 4 }
]

하시면 됩니다.reduce

arr.reduce((a, b) => a.value < b.value ? a : b)
// { name: 'b', value: 3 }

또는 최대값(최대)

arr.reduce((a, b) => a.value > b.value ? a : b)
// { name: 'a', value: 5 }

arr=[20,8,29,76,7,21,9]
ar // 76Math.max.apply(산술, ar); // 76

array.sort((a, b) => b - a)[0];

숫자 배열의 최대값을 제공합니다.

array.sort((a, b) => a - b)[0];

숫자 배열의 최소값을 제공합니다.

let array = [0,20,45,85,41,5,7,85,90,111];

let maximum = array.sort((a, b) => b - a)[0];
let minimum = array.sort((a, b) => a - b)[0];

console.log(minimum, maximum)

정말 간단한 일이야.

var arr = [10,20,30,40];
arr.max = function() { return  Math.max.apply(Math, this); }; //attach max funct
arr.min = function() { return  Math.min.apply(Math, this); }; //attach min funct

alert("min: " + arr.min() + " max: " + arr.max());

다음은 객체 배열에서 최대값을 얻는 한 가지 방법입니다.슬라이스를 사용하여 복사본을 만든 다음 복사본을 내림차순으로 정렬하고 첫 번째 항목을 가져옵니다.

var myArray = [
    {"ID": 1, "Cost": 200},
    {"ID": 2, "Cost": 1000},
    {"ID": 3, "Cost": 50},
    {"ID": 4, "Cost": 500}
]

maxsort = myArray.slice(0).sort(function(a, b) { return b.ID - a.ID })[0].ID; 

언급URL : https://stackoverflow.com/questions/1669190/find-the-min-max-element-of-an-array-in-javascript

반응형