자바 스 크 립 트 는 항상 배열 로 실전 소스 코드 를 다시 만 듭 니 다.
6636 단어 js배열무 거 운 것 을 제거 하 다
실제 프로젝트 에서 만난 배열 은 무 거 워 지고 보통 배경 에서 처리 하 며 전단 처리 배열 을 무 겁 게 하지 않 습 니 다.일상적인 프로젝트 에 사 용 될 확률 은 낮 지만 면접 에서 물 어 볼 수 있 도록 알 아 봐 야 한다.
1.대상 의 속성 활용
대상 속성 이름 을 바 꾸 지 않 는 특성 을 사용 합 니 다.
var arr = ['qiang','ming','tao','li','liang','you','qiang','tao'];
console.time("nonredundant1");
var nonredundant1 = Object.getOwnPropertyNames(arr.reduce(function(seed, item, index) {
seed[item] = index;
return seed;
},{}));
console.timeEnd("nonredundant1");
console.log(nonredundant1);
결 과 는 다음 과 같다.2.Set 데이터 구조 사용
set 는 배열 과 유사 한 구조 이지 만 set 구성원 중 중복 되 는 값 이 없습니다.set()함 수 는 하나의 배열 이나 클래스 배열 의 인 자 를 받 아들 여 set 대상 을 생 성 할 수 있 습 니 다.한편,Array.from 방법 은 두 가지 대상 을 진정한 배열 로 바 꾸 는 데 사 용 됩 니 다.배열 과 유사 한 대상(array-like object 와 iterable 을 옮 겨 다 닐 수 있 는 대상 은 ES6 에 추 가 된 데이터 구조 Set 과 Map)을 포함 합 니 다.
var arr = ['qiang','ming','tao','li','liang','you','qiang','tao'];
function unique (arr) {
return Array.from(new Set(arr))
}
console.time("nonredundant2");
var nonredundant2 = unique(arr);
console.timeEnd("nonredundant2");
console.log(nonredundant2);
결 과 는 다음 과 같다.3.for 순환 과 splice 사용
function unique(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) { // ,splice
arr.splice(j, 1);
j--;
}
}
}
return arr;
}
console.time("nonredundant3");
var arr = ['qiang', 'ming', 'tao', 'li', 'liang', 'you', 'qiang', 'tao'];
var nonredundant3 = unique(arr);
console.timeEnd("nonredundant3");
console.log(nonredundant3);
결 과 는 다음 과 같다.4.indexOf 로 무 게 를 판단
function unique(arr) {
var array = [];
for (var i = 0; i < arr.length; i++) {
if (array .indexOf(arr[i]) === -1) {
array .push(arr[i])
}
}
return array;
}
var arr = ['qiang', 'ming', 'tao', 'li', 'liang', 'you', 'qiang', 'tao'];
console.time("nonredundant4");
var nonredundant4 = unique(arr);
console.timeEnd("nonredundant4");
console.log(nonredundant4);
결 과 는 다음 과 같다.5.sort 정렬 을 사용 하여 다시 정렬 하기
function unique(arr) {
arr = arr.sort()
var arrry = [arr[0]];
for (var i = 1; i < arr.length; i++) {
if (arr[i] !== arr[i - 1]) {
arrry.push(arr[i]);
}
}
return arrry;
}
var arr = ['qiang', 'ming', 'tao', 'li', 'liang', 'you', 'qiang', 'tao'];
console.time("nonredundant5");
var nonredundant5 = unique(arr);
console.timeEnd("nonredundant5");
결 과 는 다음 과 같다.6.filter 사용
function unique(arr) {
var obj = {};
return arr.filter(function(item, index, arr){
return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
})
}
var arr = ['qiang', 'ming', 'tao', 'li', 'liang', 'you', 'qiang', 'tao'];
console.time("nonredundant6");
var nonredundant6 = unique(arr);
console.timeEnd("nonredundant6");
console.log(nonredundant6);
결 과 는 다음 과 같다.7.맵 데이터 구조 로 무 게 를 제거
function unique(arr) {
let map = new Map();
let array = new Array(); //
for (let i = 0; i < arr.length; i++) {
if (map.has(arr[i])) { // key
map.set(arr[i], true);
} else {
map.set(arr[i], false); // key
array.push(arr[i]);
}
}
return array;
}
var arr = ['qiang', 'ming', 'tao', 'li', 'liang', 'you', 'qiang', 'tao'];
console.time("nonredundant7");
var nonredundant7 = unique(arr);
console.timeEnd("nonredundant7");
console.log(nonredundant7);
결 과 는 다음 과 같다.8.reduce 와 include 를 사용 하여 무 게 를 제거 합 니 다.
function unique(arr){
return arr.reduce((prev,cur) => prev.includes(cur) ? prev : [...prev,cur],[]);
}
var arr = ['qiang', 'ming', 'tao', 'li', 'liang', 'you', 'qiang', 'tao'];
console.time("nonredundant8");
var nonredundant8 = unique(arr);
console.timeEnd("nonredundant8");
console.log(nonredundant8);
결 과 는 다음 과 같다.자 바스 크 립 트 에서 자주 사용 하 는 배열 이 실전 소스 코드 를 다시 사용 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 js 배열 이 내용 을 다시 사용 하 는 것 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.