[알고리즘] indexOf vs findIndex
Day 2
// ✅ 내가 작성한 함수
export default function reversePrefix(word, ch) {
const result = [];
const wordArr = word.split("");
const isChAlphabet = (element) => element === ch;
const chIndex = wordArr.findIndex(isChAlphabet);
const remainingWord = wordArr.slice(chIndex + 1).join("");
if (!chIndex) return word;
for (let i = chIndex; i >= 0; i--) {
result.push(wordArr[i]);
}
return result.join("") + remainingWord;
}
// 다른 조원의 풀이 👀
export default function reversePrefix(word, ch) {
const chIndex = word.indexOf(ch);
if (chIndex === -1) {
return word;
}
const wordArray = word.split("");
const reversedWordArray = wordArray.splice(0, chIndex + 1).reverse();
const answer = reversedWordArray.concat(wordArray).join("");
return answer;
}
// ✅ test code
import { expect } from "chai";
import reversePrefix from "../lib/02-reversePrefixofWord";
describe("2. Reverse Prefix", () => {
it("It should pass basic cases", () => {
expect(reversePrefix("abcdefd", "d")).to.eql("dcbaefd");
expect(reversePrefix("xyxzxe", "z")).to.eql("zxyxxe");
expect(reversePrefix("abcd", "z")).to.eql("abcd");
});
});
두 번째 알고리즘 풀이 시간을 가졌는데 이전에 과제에서 사용하였던 findIndex
가 머리에 남아서인지 일반 배열에서의 일치하는 요소를 찾기 위한 메서드인 indexOf
를 사용하지 않고 findIndex
를 습관처럼 사용하게 되었다. 그러다 문득 둘의 차이를 제대로 인지하지 않고 쓰고 있다는 사실을 알게 되어 사소한 부분이지만 둘의 차이에 대해 정확히 정리해보고자 한다.
🌟 되짚어보게 된 점
-
findIndex()
vsindexOf()
두 메서드의 가장 큰 차이는 "매개변수" 라고 한다.
- Array.prototype.indexOf()
첫 번째 매개 변수로 값 을 예상합니다 . 따라서 기본 유형 (문자열, 숫자 또는 부울)의 배열에서 인덱스를 찾는 것이 좋음.
이를 사용하여 "정확한 요소" 인덱스를 찾을 수 있지만 조건자를 전달할 수는 없다.
특정 요소를 찾으려면 더 빠름.
- Array.prototype.findIndex()
원시 유형이 아닌 배열 (예 : 객체)의 인덱스가 필요하거나 찾기 조건이 단순한 값보다 더 복잡한 경우이 옵션을 사용.
-> 즉, 단순한 배열 내의 요소를 찾을 때에는indexOf()
를 사용하면 되지만, 찾아야하는 요소가 복잡할 경우, 또는 객체의 인덱스가 필요할 경우 사용. -
reverse()
: 배열의 순서를 반전. 첫 번째 요소는 마지막 요소가 되며 마지막 요소는 첫 번째 요소가 되는 메서드. -
indexOf()
의 return 값
메서드는 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환
-> 다른 분의 풀이를 보면 존재하지 않았을 경우의 조건을 빠르게 early return 해주었는데 return 값을 더 명확히 알고 응용하는 것 또한 중요하다는 것을 알게 되었다.
🌈 느낀 점
어느 순간부터 자꾸 기초적인 부분들을 놓치고 있다는 느낌을 강하게 받았다.
변수명 선언이나 let
, const
사용에 있어서 더더욱.. 🥲
습관이라는 것이 굉장히 무섭다는 것을 알아서 코드 하나를 쓰더라도 한자한자 고민하고 생각하면서 적는 습관을 다시 들여야겠다는 생각이 들었다.
이래서 기록을 남기고 반복해서 복습하고 익히는 시간이 중요한 것 같다.
한 번 알게된 지식이여도 시간이 흐르면 언제든 까먹게되기 때문에..
참고 사이트) MDN
Author And Source
이 문제에 관하여([알고리즘] indexOf vs findIndex), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@serenity/indexOf-vs-findIndex-m9afhfjy저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)