slice
_.slice = function(arr, start, end) {
// start가 undefined인 경우, 0부터 시작
let _start = start || 0;
let _end = end;
// 인덱스가 음수인 경우
if (start < 0) _start = Math.max(0, arr.length + start);
if (end < 0) _end = Math.max(0, arr.length + end);
// end가 undefined이거나 배열의 범위를 벗어날 경우, 마지막 인덱스까지 동작
if (_end = undefined || _end > arr.length) _end = arr.length;
let result = [];
for (let i = _start; i < _end; i++) {
result.push(arr[i]);
}
return result;
}
JavaScript
복사
first
// _.first는 배열의 처음 n개의 element를 담은 새로운 배열을 리턴합니다.
// n이 undefined이거나 음수인 경우, 빈 배열을 리턴합니다.
// n이 배열의 길이를 벗어날 경우, 전체 배열을 shallow copy한 새로운 배열을 리턴합니다.
_.first = function(arr, n) {
let _n = n;
if (_n === undefined || _n < 0) _n = 0;
return _.slice(arr, 0, _n);
}
JavaScript
복사
last
_.last = function(arr, n) {
let _n = n;
if (_n === undefined || _n < 0) _n = 1
return _.slice(arr, arr.length - _n);
}
JavaScript
복사