>

이 배열이 있습니다

array = [{name:name,score:2},{name:name2,score:2},{name:name3,score:3},{name:name4,score:4},{name:name5,score:4}]

이 배열에서 가장 높고 가장 낮은 발생 (점수)을 얻을 수 있도록 도와주세요.

최고

highestoccurence = [{name:name4,score:4},{name:name5,score:4}]
lowestoccurence = [{name:name,score:2},{name:name2,score:2}]

감사합니다

  • 답변 # 1

    최소 및 최대 값 찾기 :

    var array = [{name:'abc',score:2},{name:'gdf',score:2},{name:'ghd',score:3},{name:'asdf',score:4},{name:'qwer',score:4}];
    var max = -Infinity; 
    var min = +Infinity; 
    array.forEach(function(obj) {
        if(obj.score > max) {
            max = obj.score;
        }
        if(obj.score < min) {
            min = obj.score;
        }
    });
    
    

    그리고 그 정보를 사용하여 배열을 필터링하십시오 :

    var highestoccurence = array.filter(function(el) {
        return el.score == max;
    });
    var lowestoccurence = array.filter(function(el) {
        return el.score == min;
    });
    
    

  • 답변 # 2

    다음과 같은 방법으로 할 수 있습니다

    let array = [{name:'name',score:2},{name:'name2',score:2},{name:'name3',score:3},{name:'name4',score:4},{name:'name5',score:4}];
    
    let max = array.reduce(function(a, b){
        if(a.score > b.score)
            return a;
        return b;
    })
    max_array = array.filter(function(element){
        return element.score == max.score;
    });
    console.log(max_array);
    
    

    let array = [{name:'name',score:2},{name:'name2',score:2},{name:'name3',score:3},{name:'name4',score:4},{name:'name5',score:4}];
    
    let min = array.reduce(function(a, b){
        if(a.score < b.score)
            return a;
        return b;
    })
    min_array = array.filter(function(element){
        return element.score == min.score;
    });
    console.log(min_array);
    
    

  • 답변 # 3

    Lodash를보십시오.

    const maxItems = _.filter(array, { score: _.maxBy(array, 'score').score });
    const minItems = _.filter(array, { score: _.minBy(array, 'score').score });
    
    

    _.maxBy(array, 'score')  첫 번째 최대 점수 항목을 반환합니다.

    _.filter(array, { score: maxItem.score })  최대 점수와 동일한 점수를 가진 항목을 반환합니다.

  • 답변 # 4

    higher 에 대해 별도로 확인  그리고 lower  배열을 만듭니다

    array = [{name:"name",score:2},{name:"name2",score:2},{name:"name3",score:3},{name:"name4",score:4},{name:"name5",score:4}];
    highest = [];
    highestScore = 0;
    lowest = [];
    lowestScore = 0;
    for(i in array){
      if(i == 0){
        lowestScore = array[i].score;
        highestScore = array[i].score;
        lowest.push(array[i]);
        highest.push(array[i]);
      }else{
        if(array[i].score <= lowestScore){
          if(array[i].score != lowestScore){
            lowest = [];
            lowestScore = array[i].score;  
          }
          lowest.push(array[i]);
        }
        if(array[i].score >= highestScore){
          if(array[i].score != highestScore){
            highest = [];
            highestScore = array[i].score;  
          }
          highest.push(array[i]);
        }
      }
    }
    console.log("lowest",lowest);
    console.log("highest",highest);
    
    

관련 자료

  • 이전 java - CloseableHttpClient 연결 풀 종료
  • 다음 typescript - 각도 ts - ngfor에서 로컬 데이터가있는 컴포넌트 가져 오기