재귀적으로 중첩된 배열에서 입력받은 값의 내부 배열까지 모두 포함한 횟수 검색
숫자, 문자 제한 없이 구분하여 검색
/**
* arr 배열의 중첩된 하위 배열까지 target의 개수를 검색
* @param {Array} 조회될 중첩 배열
* @param {number | string} target 조회값
* @returns {number} target 개수
*/
function numberOfItems(arr, target){
let count = 0;
for (const value of arr) {
if (Array.isArray(value)) {
count += numberOfItems(value, target)
} else if (value === target) {
count += 1;
}
}
return count;
}
const arr = [123, 'abc', '66', [123, 'bbc'], [123, ['66'], 66, '66']];
console.log(numberOfItems(arr, 123)) // 3
console.log(numberOfItems(arr, '66')) // 3
console.log(numberOfItems(arr, 66)) // 1