什么'这相当于javascript中的.get吗

What's the equivalent of .get in javascript?

本文关键字:javascript 中的 get 相当于 什么      更新时间:2023-09-26
d = {'hello':'abc'}
d.get('hello','default_val');

上面是蟒蛇。如何在javascript中做到这一点?如果找不到键,我希望能够设置默认值。

您(至少(有四个/五个选项:

  1. 在现代环境中,您可能会使用零合并运算符(??(:

    x = obj.key ?? "default";
    

    如果obj.key导致undefinednull,则使用"default";如果obj.key导致任何其他值,则使用该值(包括各种伪值,如""(。

    在没有??的过时环境中,您可以使用功能强大得出奇的||运算符:

    x = obj.key || "default";
    

    如果obj.key导致任何错误值(包括""(,则将使用"default";否则,它将使用该值。在可能的情况下,您通常希望使用??而不是||,因为它更准确地测试";缺少";价值

  2. 这已经过时了,??处理这种情况 对于||不适用的情况,有in运算符:

    x = "key" in obj ? obj.key : "default";
    

    in告诉我们一个对象是否具有给定键的属性。请注意,键是一个字符串(属性名称是字符串或Symbol;如果您使用的是Symbol,您就会知道(。因此,如果obj.key可能是有效的0,那么您应该使用它,而不是上面的#1

  3. in(和obj.key(将在对象对象的原型链中找到一个密钥。如果你只想检查对象本身,而不是它的原型链,在现代环境中,你可以使用Object.hasOwn:

    x = Object.hasOwn(obj, "key") ? obj.key : "default";
    

    在没有hasOwn的过时环境中,可以使用polyfill,也可以使用hasOwnProperty(但要注意,对象可能有自己的hasOwnProperty版本,可能无法说出真相(:

    x = obj.hasOwnProperty("key") ? obj.key : "default";
    
  4. 如果您不想排除null,您可以专门检查undefined:

    x = typeof obj.key !== "undefined" ? obj.key : "default";
    

    如果obj没有该属性,则使用默认值;如果它有该属性,但该属性的值为undefined,则使用

Javascript的逻辑OR运算符短路。你可以做:

d["hello"] || "default_val";

使用析构函数赋值:

const { hello = 'default_val' } = d

关于:

var d = {'hello':'abc'};
var helloVar = d.hello ? d.hello : 'default_val';