반응형
reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서 (reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.
arr.reduce(callback[, initialValue])
const array1 = [1, 2, 3, 4];
// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumWithInitial = array1.reduce((accumulator, currentValue) => accumulator + currentValue, initialValue);
console.log(sumWithInitial);
// Expected output: 10
indexOf() 메서드는 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환합니다.
arr.indexOf(searchElement[, fromIndex])
const beasts = ['ant', 'bison', 'camel', 'duck', 'bison'];
console.log(beasts.indexOf('bison'));
// Expected output: 1
// Start from index 2
console.log(beasts.indexOf('bison', 2));
// Expected output: 4
console.log(beasts.indexOf('giraffe'));
// Expected output: -1
lastIndexOf() 메서드는 주어진 값과 일치하는 부분을 fromIndex로부터 역순으로 탐색하여, 최초로 마주치는 인덱스를 반환합니다. 일치하는 부분을 찾을 수 없으면 -1을 반환합니다.
str.lastIndexOf(searchValue[, fromIndex])
const paragraph = 'The quick brown fox jumps over the lazy dog. If the dog barked, was it really lazy?';
const searchTerm = 'dog';
console.log(`The index of the first "${searchTerm}" from the end is ${paragraph.lastIndexOf(searchTerm)}`);
// Expected output: "The index of the first "dog" from the end is 52"
Array 인스턴스의 filter() 메서드는 주어진 배열의 일부에 대한 얕은 복사본을 생성하고, 주어진 배열에서 제공된 함수에 의해 구현된 테스트를 통과한 요소로만 필터링 합니다.
filter(callbackFn) filter(callbackFn, thisArg)
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter((word) => word.length > 6);
console.log(result);
// Expected output: Array ["exuberant", "destruction", "present"]
match() 메서드는 문자열이 정규식과 매치되는 부분을 검색합니다.
str.match(regexp);
연습
function solution1(a) {
let answer = [];
const object = [...a].reduce((ac, v) => ({ ...ac, [v]: (ac[v] || 0) + 1 }), {});
const objectKey = Object.keys(object);
const objectValues = Object.values(object);
objectKey.map((e, i) => {
if (objectValues[i] == 1) {
answer.push(e);
}
});
return answer.sort().join('');
}
function solution2(a) {
let answer = [];
for (let e of a) {
if (a.indexOf(e) == a.lastIndexOf(e)) {
answer.push(e);
}
}
return answer.sort().join('');
}
function solution3(a) {
return [...a]
.filter((e) => a.match(new RegExp(e, 'g')).length == 1)
.sort()
.join('');
}
let a = ['eogneoa', 'eprmgmdpewz', 'asdf'];
for (let i = 0; i < a.length; i++) {
console.log('solution1', solution1(a[i]));
console.log('solution2', solution2(a[i]));
console.log('solution3', solution3(a[i]));
}
결과
반응형
댓글