конечно, только рад )
var recursion=ar=>ar.reduce((a,e)=>Array.isArray(e)?a+=recursion(e):typeof e==='string'?a+=1:a,0)
страшно :D
let arr = [1, 2, 3, null, undefined, NaN, ['lala', ['dasd']]]; let counter = 0; function getStringCount(object) { // Если параметр массив if (Array.isArray(object)) { // Бежим по массиву for (let i = 0; i < object.length; i++) { // Если тип элемента строка увиличиваем счётчик if (typeof object[i] === 'string') { counter++; // Если тип элемента массив делаем рекурсию и бежим по вложенному массиву } else if (Array.isArray(object[i])) { return getStringCount(object[i]); } } // Если параметро объект } else if (typeof object === 'object') { // Бежим по объекту for (let key in object) { // Если тип значения ключа строка - увеличиваем счётчик if (typeof object[key] === 'string') { counter++; } // Иначе если тип значения ключа массив делаем рекурсию else if (Array.isArray(object[key])) { return getStringCount(object[key]); } } } return counter; } console.log(getStringCount(arr));
if (Array.isArray(x)) return x.flat(Infinity).length
function getStringCount(object,counter=0) { // Если параметр массив if (Array.isArray(object)) { // Бежим по массиву for (let i = 0; i < object.length; i++) { // Если тип элемента строка увиличиваем счётчик if (typeof object[i] === 'string') { counter++; // Если тип элемента массив делаем рекурсию и бежим по вложенному массиву } else if (Array.isArray(object[i])) { return counter+=getStringCount(object[i]); } } // Если параметро объект } else if (typeof object === 'object') { // Бежим по объекту for (let key in object) { // Если тип значения ключа строка - увеличиваем счётчик if (typeof object[key] === 'string') { counter++; } // Иначе если тип значения ключа массив делаем рекурсию else if (Array.isArray(object[key])) { return counter+=getStringCount(object[key],counter); } } } return counter }
буду разбираться, спасибо :D
Обсуждают сегодня