다음과 같이 대시(-)로 구분된 일부 반복 단어가 포함된 문자열이 제공됩니다. −
const str ='월요일-일요일-화요일-화요일-일요일-일요일-월요일-월요일월요일';
이제 우리가 할 일은 객체의 배열을 반환하는 함수를 작성하는 것입니다. 여기서 각 객체에는 두 개의 속성 값과 개수가 포함되고, 값은 문자열(월요일, 화요일, 일요일)의 단어이고 개수는 연속된 출현 횟수입니다.
위의 문자열과 마찬가지로 이 배열은 다음과 같습니다. -
const arr =[{ val:'월요일', 개수:1}, { val:'일요일', 개수:1}, { val:'화요일', 개수:2}, { val:'일요일', 개수:2}, { val:'월요일', 개수:3}]
월요일이 한 번 나타난 다음 일요일이 한 번, 화요일이 두 번, 일요일이 두 번, 마지막으로 월요일이 세 번 나타나기 때문입니다.
배열을 분할한 다음 Array.prototype.reduce() 메서드를 사용하여 다음과 같이 원하는 배열을 재귀적으로 반환합니다. -
전체 코드는 다음과 같습니다 -
예시
const str ='월요일-일요일-화요일-화요일-일요일-일요일-월요일-월요일'; const str2 ='금요일-금요일-일요일-화요일-일요일-일요일-월요일-목요일'; const compressString =(str ) => { 반환 str.split('-').reduce((acc, val) => { const { 길이:l } =acc; if(acc[l-1]?.val ===val){ acc[l-1].count++; return acc; }else{ return acc.concat({ val, count:1 }); } }, []);}console.log(compressString(str));console.log (compressString(str2));
출력
위 코드에 대한 콘솔의 출력은 -
입니다.[ { val:'월요일', 개수:1 }, { val:'일요일', 개수:1 }, { val:'화요일', 개수:2 }, { val:'일요일', 개수:2 }, { val:'월요일', 카운트:3 }][ { val:'금요일', 카운트:2 }, { val:'일요일', 카운트:1 }, { val:'화요일', 카운트:1 } , { val:'일요일', 카운트:2 }, { val:'월요일', 카운트:1 }, { val:'목요일', 카운트:1 }, { val:'월요일', 카운트:1 }]사전>