다음과 같은 배열이 있다고 가정해 보겠습니다.
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
또한, Reduce는 콜백 함수의 cur 유형과 초기 값을 선언하는 데 사용되는 두 번째 매개변수(첫 번째 매개변수)를 받을 수도 있습니다. 위 내용은 배열에 객체를 제공하는 과정에서 js의 Reduce()를 다시 살펴보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!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
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);