프로그래밍 언어/JAVA

JavaScript의 객체 배열에서 고유 한 값을 얻는 방법

Rateye 2021. 11. 3. 10:34
728x90
반응형
질문 : JavaScript의 객체 배열에서 고유 한 값을 얻는 방법은 무엇입니까?

다음이 있다고 가정합니다.

var array = 
    [
        {"name":"Joe", "age":17}, 
        {"name":"Bob", "age":17}, 
        {"name":"Carl", "age": 35}
    ]

다음과 같은 결과 배열을 얻을 수 있도록 모든 구별되는 연령의 배열을 얻을 수있는 가장 좋은 방법은 무엇입니까?

[17, 35]

"age"의 값을 확인하는 각 배열을 반복하고 다른 배열의 존재 여부를 확인하고 그렇지 않은 경우 추가 할 필요가 없도록 데이터 또는 더 나은 방법을 대안 적으로 구성 할 수있는 방법이 있습니까?

반복하지 않고 다른 연령대를 뽑을 수있는 방법이 있다면 ...

개선하고 싶은 현재의 비효율적 인 방법 ... "배열"이 객체의 배열이 아니라 고유 한 키 (예 : "1,2,3")가있는 객체의 "맵"이라는 의미라면 좋아요. 나는 가장 성능 효율적인 방법을 찾고 있습니다.

다음은 현재 내가하는 방법이지만, 나에게있어 반복은 효과가 있더라도 효율성을 위해 어리석은 것처럼 보입니다 ...

var distinct = []
for (var i = 0; i < array.length; i++)
   if (array[i].age not in distinct)
      distinct.push(array[i].age)
답변

이것이 PHP라면 키로 배열을 만들고 array_keys 를 사용하지만 JS에는 그런 사치가 없습니다. 대신 다음을 시도하십시오.

var flags = [], output = [], l = array.length, i;
for( i=0; i<l; i++) {
    if( flags[array[i].age]) continue;
    flags[array[i].age] = true;
    output.push(array[i].age);
}
출처 : https://stackoverflow.com/questions/15125920/how-to-get-distinct-values-from-an-array-of-objects-in-javascript
728x90
반응형