gpt4 book ai didi

javascript - 如果链中的所有对象都存在则获取值,如果不存在则获取回退值

转载 作者:行者123 更新时间:2023-11-30 12:40:45 25 4
gpt4 key购买 nike

感觉有点傻问..我想得到这样的东西:

var value = $scope.settings.paper.font.color || 0;

问题是一些中间对象可能不存在。

如果所有“对象链”都存在,是否有 final方法获取值(value),如果不存在则获得一些回退?

例如,在上面的行中,如果所有对象都存在,我们可能会返回 color 的值,但如果只有 $scope.settings 存在,并且没有 paper 对象它,我会得到一个错误,而不是 0。

最佳答案

首先:它没有内置函数。

最短通用解

简单地将它包装成一个try - catch

try {
// handles defaultVal if d is undefined
yourVar = typeof a.b.c.d === 'undefined' ? defaultVal:a.b.c.d;
} catch (e) {
// handles defaultVal if a,b or c are undefined
yourVar = defaultVal;
}

替代方案

您可以使用以下函数安全地遍历对象(gv - for getValue):

var gv = function(scope, chainStr, defaultValue) {
var chain = chainStr.split('.');
for (var i = 0; i < chain.length; i++) {
var newScope = scope[chain[i]];
if (typeof newScope !== 'undefined') {
scope = newScope;
} else {
return defaultValue;
}
};
return newScope;
};

像这样:

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

console.log(gv(window, 'a.b.c.d', -1));
// 3
console.log(gv(window, 'a.b.c.e', -1));
// -1
console.log(gv(a, 'b.c.d', -1));
// 3
console.log(gv(a, 'b.c.e', -1));
// -1

关于javascript - 如果链中的所有对象都存在则获取值,如果不存在则获取回退值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24532285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com