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

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

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

9 ответов

18 просмотров
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- Автор вопроса

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

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

type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
45
А чем вам питонисты не угодили?😂
.
79
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
А дин типизация это хорошо или плохо?
Alexey
12
Исходники плюс документация? Вы гоните)) демок хватит всем
zamtmn
11
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Hello. Could you please help me with finding all coordinates within a radius using a spatial index, given that I have a table with coordinates? SET @lng = 37.57925; SET @lat ...
Rinchin G
7
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
76
а что есть "статистика" ? просто подсчет фактов обращения и времен выполнения ?
Сергей
9
Карта сайта