Функция get, которая получает объект и путь к вложенному свойству объекта и возвращает значение этого свойства
Напишите функцию get, которая получает объект и путь к вложенному свойству объекта и возвращает значение этого свойства (или undefined, если свойства не существует). Третий, опциональный аргумент функции — значение по умолчанию, которое возвращается, если значения по указанному пути не существует.
function get(obj, path, defaultValue) {
// your code here
}
const obj = {
a: {
b: {
c: 'd'
},
e: 'f'
}
};
get(obj, 'a.b'); // { c : 'd' }
get(obj, 'a.b.c'); // 'd'
get(obj, 'a.e'); // 'f'
get(obj, 'a.x.e'); // undefined
get(obj, 'a.x.e', true); // true
get(obj, 'a.x.e', 'My default value'); // My default value
Ответы (4 шт):
Автор решения: nörbörnën
→ Ссылка
function deepFind(o, str, defaultValue) {
const keys = str.split('.');
let current = o;
while (keys.length > 0) {
const k = keys.shift();
if (k in current) {
current = current[k];
} else {
return defaultValue;
}
}
return current;
}
function get(...args) {
console.log(deepFind(...args));
}
const obj = {
a: {
b: {
c: 'd'
},
e: 'f'
},
z: [{a: 'hello'}]
};
get(obj, 'a.b'); // { c : 'd' }
get(obj, 'a.b.c'); // 'd'
get(obj, 'a.e'); // 'f'
get(obj, 'z.0.a'); // 'f'
get(obj, 'a.x.e'); // undefined
get(obj, 'a.x.e', true); // true
get(obj, 'a.x.e', 'My default value'); // My default value
Автор решения: WarLikeLaux
→ Ссылка
function get(obj, path, defaultValue = undefined) {
arr = path.split('.');
result = obj;
for (let i = 0; i < arr.length; i++) {
if (arr[i] in result) {
result = result[arr[i]];
} else {
result = defaultValue;
break;
}
}
console.log(result);
}
const obj = {
a: {
b: {
c: 'd'
},
e: 'f'
}
};
get(obj, 'a.b'); // { c : 'd' }
get(obj, 'a.b.c'); // 'd'
get(obj, 'a.e'); // 'f'
get(obj, 'a.x.e'); // undefined
get(obj, 'a.x.e', true); // true
get(obj, 'a.x.e', 'My default value'); // My default value
Автор решения: Семён Сорокин
→ Ссылка
function get(obj, path, defaultValue) {
const keys = path.split(".");
const go = (acc, v) => (acc === undefined) ? acc : acc[v];
const res = keys.reduce(go, obj);
return (res === undefined) ? defaultValue : res;
}
const obj = {
a: {
b: {
c: 'd'
},
e: 'f'
}
};
get(obj, 'a.b'); // { c : 'd' }
get(obj, 'a.b.c'); // 'd'
get(obj, 'a.e'); // 'f'
get(obj, 'a.x.e'); // undefined
get(obj, 'a.x.e', true); // true
get(obj, 'a.x.e', 'My default value'); // My default value
Автор решения: Алексей
→ Ссылка
const obj = { red: { big: { apple: 'currentValue' } } };
const str = 'red.big.apple';
const get = (path, obj, defaultValue) =>
path
.split('.')
.reduce(
(acc, itemStr) => (acc[itemStr] ? acc[itemStr] : defaultValue),
obj
);
console.log(get(str, obj, 'null')); // currentValue