获取嵌套值的简写

时间:2016-11-21 17:24:19

标签: javascript reactjs immutable.js

当其中一个属性可能为null或未定义时,我一直在寻找一种很好的方法来获取真正的嵌套值。

示例对象:

var a = {
    b: {
        c: {
            d: 10
        }
    }
}

现在让我们说这是对象在完全填充时所具有的结构,但有时b未定义或c或甚至d。在javascript中,我可能会采用这样的方式:

 var d = a && a.b && a.b.c && a.b.c.d // Now d has value d or some falsy value

在Immutable.js中我可以做以下事情(我觉得更干净):

var d = a.getIn(['b', 'c', 'd'], null) 

这允许我检索d的值,如果路上出现任何故障,甚至可以将最终参数设置为默认值。

我可以在js中做类似的事情。

1 个答案:

答案 0 :(得分:4)

在检查值和类型后,您可以使用对象减少数组。



function getIn(object, keys, def)  {
    return keys.reduce(function (o, k) {
        return o && typeof o === 'object' && k in o ? o[k] : def;
    }, object);
}

var a = { b: { c: { d: 10 } } };

console.log(getIn(a, ['b', 'c', 'd'], null));
console.log(getIn(a, ['b', 'c', 'd', 'e'], null));