鍍金池/ 問(wèn)答/HTML/ js 對(duì)象取值遇到undefinded時(shí),如何停止繼續(xù)取值?

js 對(duì)象取值遇到undefinded時(shí),如何停止繼續(xù)取值?

問(wèn)題如下:
對(duì)方 正常情況下 給我傳遞了一個(gè)對(duì)象,接收后如下

var val={
    o1:{
        key:1
    },
    o2:{
        key:2
    }
}

但出現(xiàn)錯(cuò)誤時(shí),傳回默認(rèn)值,我接收后如下

var val={
    o2:{
        key:2
    }
}

我想要的效果就是,如果出現(xiàn)錯(cuò)誤時(shí)取傳給我的默認(rèn)值,,這么寫覺(jué)得比較優(yōu)雅[但報(bào)錯(cuò)]

var key=val.o1.key || val.o2.key;//undefined

但我需要判定o1是否undefined,如下

if(typeof val.o1 === 'undefined'){
    key=val.o2.key;
}else{
    key=val.o1.key;
}

有沒(méi)有什么有效但優(yōu)雅的方法可以在 var key=val.o1.key || val.o2.key;時(shí),o1未定義則直接去后面的值,而不報(bào)錯(cuò)?

回答
編輯回答
編輯回答
陌璃

var key = (val.o1 || val.o2 || {}).key || null;

2017年9月18日 03:10
編輯回答
還吻

兄弟你哪個(gè)if語(yǔ)句壓根不會(huì)走,typeof一個(gè)對(duì)象 返回值應(yīng)該為object吧 。你可以用instanceof

2017年12月20日 08:26
編輯回答
汐顏

在可以無(wú)視 es6 兼容性的情況下可以考慮下面的代碼:

const {o1:{key:key1}={},o2:{key:key2}={}} = val
const key = key1 || key2
2017年11月22日 22:05
編輯回答
青裙
Object.values(val)[0]['key']
2017年7月5日 04:07