Python用于字典的get方法让我可以指定在键不存在时应该返回的内容。对于我目前的情况,我希望退还一本字典。我如何在Javascript中做到这一点?
发布于 2017-05-26 00:20:46
没有与python字典get方法等效的javascript。如果你自己把它写成一个函数,它会是这样的:
function get(object, key, default_value) {
var result = object[key];
return (typeof result !== "undefined") ? result : default_value;
}像这样使用它:
var obj = {"a": 1};
get(obj, "a", 2); // -> 1
get(obj, "b", 2); // -> 2请注意,请求的密钥也可以在obj的原型中找到。
如果你真的想要一个方法而不是一个函数(obj.get("a", 2)),你需要扩展Object的原型。不过,这通常被认为是一个坏主意,请参阅Extending Object.prototype JavaScript
发布于 2017-05-25 23:58:06
JavaScript没有帮助功能来做到这一点。您需要显式地进行测试。
if ("myProperty" in myObject) {
return { another: "object" };
} else {
return myObject.myProperty;
}你可以使用一个三元运算符,用更少的代码来做同样的事情。
return ("myProperty" in myObject) ? myObject.myProperty : { another: "object" };发布于 2017-05-26 00:08:01
你可以使用代理来实现这一点(非常新):
var handler = {
get: function(target, name){
return name in target?
target[name] :
"Default";
}
};
var dictionary={"hi":true};
var dict = new Proxy(dictionary, handler);
dict.a = 1;
dict.b = undefined;
console.log(dict.a, dict.b,dict.hi); // 1, undefined,true
console.log(dict.new); //"Default"
//the proxied object gets changed:
console.log(dictionary.a, dictionary.b,dictionary.hi); // 1, undefined,true
console.log(dictionary.new); //undefined代理是一个通过处理程序反映所有更改和请求的对象。在这种情况下,我们可以正常地写/访问字典的属性,但是如果我们访问不存在的值,它将返回"Default“
https://stackoverflow.com/questions/44184794
复制相似问题