gpt4 book ai didi

javascript相当于python的dictionary.get

转载 作者:数据小太阳 更新时间:2023-10-29 06:11:24 29 4
gpt4 key购买 nike

我正在尝试使用 node.js 验证 JSON 对象。基本上,如果存在条件 A,那么我想确保某个特定值位于可能不存在的数组中。我在 python 中使用 dictionary.get 执行此操作,因为如果我查找不存在的内容,它将返回默认值。这是它在 python 中的样子

if output.get('conditionA') and not 'conditionB' in output.get('deeply', {}).get('nested', {}).get('array', []):
print "There is an error somewhere you need to be fixing."

我想为 javascript 找到类似的技术。我尝试使用下划线中的默认值来创建键(如果它们不存在),但我认为我做的不对,或者我没有按照预期的方式使用它。

var temp = _.defaults(output, {'deeply': {'nested': {'array': []}}});
if (temp.hasOwnProperty('conditionA') && temp.deeply.nested.array.indexOf('conditionB') == -1) {
console.log("There is an error somewhere you need to be fixing.");
}

似乎如果它遇到一个缺少嵌套对象的输出,它不会用默认值替换它,而是用 TypeError: Cannot read property 'variety' of undefined 其中“variety”是我正在查看的数组的名称。

最佳答案

或者更好的是,这是一个模仿 python 字典功能的快速包装器。

http://jsfiddle.net/xg6xb87m/4/

function pydict (item) {
if(!(this instanceof pydict)) {
return new pydict(item);
}
var self = this;
self._item = item;
self.get = function(name, def) {
var val = self._item[name];
return new pydict(val === undefined || val === null ? def : val);
};
self.value = function() {
return self._item;
};
return self;
};
// now use it by wrapping your js object
var output = {deeply: { nested: { array: [] } } };
var array = pydict(output).get('deeply', {}).get('nested', {}).get('array', []).value();

编辑

另外,这里有一个快速而肮脏的方法来执行嵌套/多个条件:

var output = {deeply: {nested: {array: ['conditionB']}}};
var val = output["deeply"]
if(val && (val = val["nested"]) && (val = val["array"]) && (val.indexOf("conditionB") >= 0)) {
...
}

Edit 2 根据 Bergi 的观察更新了代码。

关于javascript相当于python的dictionary.get,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27004272/

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