리듀스 함수는 ECMAScript5 스펙에 등장하는 배열 방식입니다. 이번 글을 통해 공유하겠습니다. 자바스크립트고전적인 인터뷰 루틴인 리듀스 함수 확인이 필요한 친구들은 참고하시면 됩니다
오늘 우연히 문자열의 동일한 문자 수를 세는 고전적인 인터뷰 질문을 완성하기 위해 매우 짧은 길이의 코드를 발견했습니다. 가치 있는 것을 발견하지 못하여 낭비가 되었습니다. 이해하는 데 시간이 좀 걸렸고 이제 아이디어를 다음과 같이 정리합니다.
원본 코드:
var arr="qweqrq" var info= arr.split('').reduce((a,b)=> (a[b]++ || (a[b]=1),a) ,{}) console.log(info)
코드 아이디어는 다음과 같습니다. 분할 메소드를 통해 문자열 arr을 배열로 변환한 다음, 이 메소드의 역할은 다음과 같습니다.
1 먼저, 감소는 배열의 각 요소를 실행하는 콜백을 받습니다. . 위의 예시와 같이 두 번째 매개변수가 있는 경우: {}. , 콜백은 이 {}를 매개변수로 사용하여 배열의 첫 번째 요소와 함께 콜백에 전달합니다.
2. 매개변수를 전달한 후 AND 게이트 단락 연산이 수행됩니다. 이는 기본 값 연산이라고도 할 수 있으며, a[b]++가 true가 되면 a[b]를 반환합니다. 여기서 a는 {}이고 b는 "q"입니다. 분명히 a에는 b가 없습니다. a[b]=1이 실행되면 a[b]에 값 1이 할당되고 그 뒤에 쉼표 표현식이 표시됩니다. 수식 이므로 a[b]:1을 사용하여 속성 AND 게이트 단락 연산을 사용하여 객체
를 반환합니다. 연산 숫자의 값이 참이면 단락 연산을 수행하여 첫 번째 피연산자의 값을 직접 생성합니다. false인 경우 두 번째 피연산자의 값을 반환합니다. 쉼표 표현: 쉼표 표현의 일반적인 형태는 표현식 1, 표현식 2, 표현식 3... 표현식 n입니다. 쉼표 표현식의 해결 과정은 다음과 같습니다. 먼저 표현식 1의 값을 계산한 다음 표현식 2의 값을 계산하고... 표현식 n의 값이 계산될 때까지. 마지막으로 전체 쉼표 표현식의 값은 표현식 n의 값입니다. 3. Reduce 함수에 대해서는 나중에 설명하겠습니다. 이전 실행 후 반환된 결과를 매개변수로 사용하고 이를 후속 요소와 함께 실행을 위해 콜백에 계속 전달할 수 있습니다. 이는 fn과 동일합니다. (fn(fn(fn(a, b), c), d), e), fn은 콜백입니다. 4. 이 예에서는 두 번째 매개변수인 {}가 전달되므로 콜백이 됩니다. 6번 실행됩니다. 이는 배열의 각 요소에 대해 중복 항목을 입력하고 확인하는 것과 동일합니다. 예를 들어 콜백이 네 번째 실행되면 a는 {q:1,w:1,e:1}이고 콜백이 실행됩니다. a[ b] 즉, a['q']가 존재합니다. a['q']++가 실행되면 a['q']의 값은 2가 되고, 최종 결과는 속성 이름이 됩니다. 시간이 속성 값인 객체입니다. Reduce는 es5에서 도입된 방법으로 ie8 이하에서는 호환되지 않는다는 점에 유의해야 합니다.위 내용은 Javascript 축소 기능 중복 검사에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!