>  기사  >  백엔드 개발  >  배열에 객체를 제공하는 과정에서 js의 Reduce()를 다시 살펴보세요.

배열에 객체를 제공하는 과정에서 js의 Reduce()를 다시 살펴보세요.

一个新手
一个新手원래의
2018-05-19 17:05:042402검색

다음과 같은 배열이 있다고 가정해 보겠습니다.

let person = [
     {id: 0, name: "小明"},
     {id: 1, name: "小张"},
     {id: 2, name: "小李"},
     {id: 3, name: "小孙"},
     {id: 1, name: "小周"},
     {id: 2, name: "小陈"},   
]

배열에서 ID가 중복된 개체(예: ID가 2인 두 개체)를 제거하려고 합니다. -

{id: 2, name: "小李"}和{id: 2, name: "小陈"} (去掉任何一个都可以)

어떻게 해야 합니까?

사실 배열 객체의 경우 기존 중복 제거 방법은 무력하며 forEach() 및 filter()와 같은 반복 방법은 사용하기 쉽지 않습니다. 진정으로 우아한 중복 제거를 달성할 수 있는 방법은 ES5에 새로 추가된 방법입니다. Reduce()

reduce() 메소드는 콜백 함수를 첫 번째 매개변수로 받고, 콜백 함수는

1.cur =>

2.다음 =>

3.인덱스 값; > 배열 자체

일반적인 감소 방법은 배열의 각 항목을 연속적으로 겹쳐서 반환하는 것입니다.

let log = console.log.bind(console);
let arr = [1,2,3,4,5,6];
arr = arr.reduce((cur,next) => {     return cur + next;
})
log(arr); // 21
위 코드의 최종 결과는 1+2입니다. + 3+4+5+6 = 21;

또한, Reduce는 콜백 함수의 cur 유형과 초기 값을 선언하는 데 사용되는 두 번째 매개변수(첫 번째 매개변수)를 받을 수도 있습니다.

let log = console.log.bind(console);
let arr = [1,2,3,4,5,6];
arr = arr.reduce((cur,next) => {     return cur + next;
},0) //指定cur的类型为Number并且初始值为0,当设为1时,最终打印的值为22log(arr); // 21
reduce( ) 대략 이렇습니다. 이 방법을 통해 배열에 있는 개체의 중복 제거를 매우 우아하게 달성할 수 있습니다. 기사 시작 부분의 배열로 돌아가 보겠습니다.
let log = console.log.bind(console);
let person = [
     {id: 0, name: "小明"},
     {id: 1, name: "小张"},
     {id: 2, name: "小李"},
     {id: 3, name: "小孙"},
     {id: 1, name: "小周"},
     {id: 2, name: "小陈"},   
];

let obj = {};

person = person.reduce((cur,next) => {
    obj[next.id] ? "" : obj[next.id] = true && cur.push(next);    return cur;
},[]) //设置cur默认类型为数组,并且初始值为空的数组
log(person);
사람을 인쇄한 후 중복 제거된 배열을 얻을 수 있습니다.

위 내용은 배열에 객체를 제공하는 과정에서 js의 Reduce()를 다시 살펴보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.