JSFiddle - React, Tailwind, and code Playground
by krustnic
JavaScript
// Обращение к свойству объекта
const o = {
a: {
b: {},
c: 42
},
z: null
};
/*
(o, 'a.c') => 42
(o, 'a.d') => undefined
(o, 'z') => null
*/
function f2(obj, str) {
return eval('obj.' + str)
}
function f3(obj, str) {
const keys = str.split('.')
let link = obj
for(const s of keys) {
if (!link[s]) return obj[s]
link = link[s]
}
return link
}
function f(obj, str) {
return str.split('.').reduce((link, key, i, arr) => {
if (!link[key]) arr.splice(i-1)
return link[key]
}, obj)
}
console.log(f(o, 'a.c'))
console.log(f(o, 'a.d'))
console.log(f(o, 'z'))