directus

Форк
0
/
map-values-deep.ts 
25 строк · 792.0 Байт
1
export function mapValuesDeep(obj: Record<string, any>, fn: (key: string, value: any) => any): Record<string, any> {
2
	return recurse(obj);
3

4
	function recurse(obj: Record<string, any>, prefix = ''): Record<string, any> {
5
		if (Array.isArray(obj)) {
6
			return obj.map((value, index) => {
7
				if (typeof value === 'object' && value !== null) {
8
					return recurse(value, prefix + `[${index}]`);
9
				} else {
10
					return fn(prefix + `[${index}]`, value);
11
				}
12
			});
13
		} else {
14
			return Object.fromEntries(
15
				Object.entries(obj).map(([key, value]) => {
16
					if (typeof value === 'object' && value !== null) {
17
						return [key, recurse(value, prefix + (prefix ? '.' : '') + key)];
18
					} else {
19
						return [key, fn(prefix + (prefix ? '.' : '') + key, value)];
20
					}
21
				}),
22
			);
23
		}
24
	}
25
}
26

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.