티스토리 뷰
설명하는 코드가 필요하면 잘못 작성되었다는 신호일 수 있습니다. 최소한 그와 같은 줄에는 그것을 설명하는 주석이 필요합니다.
대신 재 작성을 고려하십시오.
function dropElements(arr,func) {
var start = arr.findIndex(func);
if( start < 0) {
// no match
return [];
}
else {
return arr.slice(start);
}
}
두 번째 arr.length
는 중복 된다는 점에 유의하십시오 .slice()
. 달리 지정하지 않으면 어레이의 끝으로 슬라이스됩니다.
다음과 같이 생각하십시오.
if(arr.findIndex(func) >= 0) {
startI = arr.findIndex(func);
} else {
startI = arr.length;
}
endI = are.length;
return arr.slice(startI, endI);
... 도움이 되나요? 기본적으로? ... :는 if else처럼 작동하며 전체 인수 뒤에 ..., 두 번째 인수가옵니다. 매우 혼란스럽고 사람들이 작업 순서를 명확히하기 위해 괄호를 사용하지 않는 것이 싫습니다.
-------------------우리가 이것을 arr.slice(arr.findIndex(func) >= 0 ? arr.findIndex(func): arr.length, arr.length);
나누면 :
우리는 얻을 것이다 : arr.slice(begin, end)
어디
begin = arr.findIndex(func) >= 0 ? arr.findIndex(func): arr.length
과
end = arr.length
그래서 이것은 begin
주어진 배열의 끝 에서 슬라이스 할 것입니다
브레이크 다운 :
arr.slice(
arr.findIndex(func) >= 0 ? arr.findIndex(func) : arr.length, // First argument for slice method
arr.length // Second slide argument.
);
이제 slise의 첫 번째 주장을 분석해 보겠습니다.
arr.findIndex(func) >= 0 ? // If the call of arr.findIndex(func) it is greater than 0
arr.findIndex(func) : // Then return the result of this method call
arr.length // Other wise return the length of the arr
따라서이 코드가하는 일은 첫 번째 삼항 연산자에서 반환 된 숫자에서 배열 길이까지 분할하는 배열을 시작하는 것입니다.
출처
https://stackoverflow.com/questions/39917119
댓글