169 похожих чатов

Гайз, я опять с рекурсией, задача следующая - вернуть количество

строк в массиве или объекте, и не важно сколько вложенностей, сделал через глобальную переменную, есть ли возможность сделать как-то без неё?

9 ответов

29 просмотров
qwerty- Автор вопроса

конечно, только рад )

var recursion=ar=>ar.reduce((a,e)=>Array.isArray(e)?a+=recursion(e):typeof e==='string'?a+=1:a,0)

qwerty- Автор вопроса
Lev
Сильно

страшно :D

qwerty- Автор вопроса

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

qwerty
let arr = [1, 2, 3, null, undefined, NaN, ['lala',...

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 }

qwerty- Автор вопроса

буду разбираться, спасибо :D

qwerty- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта