-
카테고리
-
세부 분야
웹 개발
-
해결 여부
미해결
배열함수 filter 문제
22.05.03 00:44 작성 조회수 94
0
let doubleLetter = names.filter((item) => {
let splitName = item.split("");
return splitName.some((letter, index) => letter == splitName[index + 1]);
})
console.log(doubleLetter)
filter 조건에 some을 사용해서 true가 반환되면 true에 부합하는 배열의 문자열이 반환되는걸로 이해했습니다.
그런데 some 조건에 letter가 어떤 역할인지 잘 모르겠어요.. ㅠㅠ
splitName[index] == splitName[index + 1] 이렇게 하면 names 배열이 전부 콘솔창에 뜨던데 이건 왜 안되는건가요??
찾아보니 split이 지정한 구분자로 문자열을 나눠서 배열에 담아 리턴한다고 나와있던데
let names = [ "Steven Paul Jobs", "Bill Gates" ];
이면 item.split("") 했을 때, let splitName = [["Steven", "Paul" , "Jobs"], ["Bill", "Gates"]] 이렇게 되는게 맞나요??
그러면 letter == splitName[index + 1] 은 어떻게 되는건가용...
답변을 작성해보세요.
1
코딩알려주는누나
지식공유자2022.05.07
안녕하세요!
split은 문자를 나누는 함수입니다 () 안에 들어간 값 기준으로 나누게 됩니다
let names = [ "Steven Paul Jobs", "Bill Gates" ];
이는 문자가 아닌 배열이기 때문에 split함수를 쓸 수 없습니다
let name = "Steven Paul Jobs" 라면
name.split(" ") 이 가능합니다
이와같은 경우에는 공백을 기준으로 나누기 때문에
반환값은 배열로
["Steven", "Paul" , "Jobs"]
로 나오게 됩니다.
split("")를 하게되면 공백이아닌 문자열을 하나하나 나누게 됩니다 그래서
['S', 't', 'e', 'v', 'e', 'n', ' ', 'P', 'a', 'u', 'l', ' ', 'J', 'o', 'b', 's'] 가 결과값이 됩니다
some에서의 letter는 이 글자 하나하나를 다시 가져오는 역할을 합니다
따라서 letter에는 매 턴 마다 S, t, e, v, e, n 이 차례로 들어가게 됩니다
답변 1