js 배열 재 활용 (배열 요소 가 대상 인 경우)
3360 단어 js
그러나 배열 요소 가 대상 일 때 간단하게 비교 할 수 없고 특정한 방식 으로 각 값 을 옮 겨 다 니 며 이미 나 타 났 는 지 여 부 를 판단 해 야 한다.
왜냐하면:
1. 해시 판단 법 이 라면 대상 이 해시 표 의 아래 표 시 를 하면 자동 으로 문자 형 유형 으로 바 뀌 어 모든 요소 가 같 게 되 는데 이때 판단 방법 은 더 이상 의미 가 없다.보통 마지막 배열 이 하나 밖 에 안 남았어 요.
2. 직접 비교 법 이 라면 대상 이 메모리 에서 인용 에 따라 접근 하기 때문에 속성 값 이 같은 대상 도 같 지 않 고 간단 한 직접 판단 은 더 이상 의미 가 없다.보통 마지막 배열 은 그대로 입 니 다.
그래서 값 비 교 를 해 야 돼 요.
물론, 해당 대상 을 문자열 로 바 꿀 수도 있 습 니 다. (기본 적 인 [object] 가 아 닙 니 다.)
예 를 들 어:
var array = [
{a:1,b:2,c:3,d:4},
{a:11,b:22,c:333,d:44},
{a:111,b:222,c:333,d:444},
{a:11,b:22,c:33,d:44},
{a:11,b:22,c:33,d:444}
];
속성 a 에 따라 b 는 배열 을 위해 무 게 를 줄 여야 합 니 다.
그러면 마지막 에 얻 을 수 있 습 니 다.
array = [
{a:1,b:2,c:3,d:4},
{a:11,b:22,c:333,d:44},
{a:111,b:222,c:333,d:444}
];
//
function obj2key(obj, keys){
var n = keys.length,
key = [];
while(n--){
key.push(obj[keys[n]]);
}
return key.join('|');
}
//
function uniqeByKeys(array,keys){
var arr = [];
var hash = {};
for (var i = 0, j = array.length; i < j; i++) {
var k = obj2key(array[i], keys);
if (!(k in hash)) {
hash[k] = true;
arr .push(array[i]);
}
}
return arr ;
}
//
var arr = uniqeByKeys(array,['a','b']);
이런 방식 은 잠시 괜 찮 습 니 다. 물론 그런 속성 과 값 조합 이 나타 나 면 xx 와 같은 것 이 나타 나 면 xx 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.