在Python中将Dict查找到javascript

时间:2018-10-10 22:21:37

标签: javascript python

以下两个表达式是否等效?

BCrypt::Password.new('$2a$10$Pgxl1C8Ceg5WN5FJyP4OOOI/SiRZ0oujvWEWdNg95xp2qcPn6aP2q') == 'test1234567'
=> true

BCrypt::Password.new('$2a$10$Pgxl1C8Ceg5WN5FJyP4OOOI/SiRZ0oujvWEWdNg95xp2qcPn6aP2q')
=> "$2a$10$Pgxl1C8Ceg5WN5FJyP4OOOI/SiRZ0oujvWEWdNg95xp2qcPn6aP2q"

"$2a$10$Pgxl1C8Ceg5WN5FJyP4OOOI/SiRZ0oujvWEWdNg95xp2qcPn6aP2q" == 'test1234567'
=> false

如果没有,那么执行上述python dict查找的javasript中最接近的等效项是什么?

2 个答案:

答案 0 :(得分:2)

Python 。在Python中,如果您编写:

PLAN_TO_COST_PER_UNIT.get(planType, value_if_empty)

这意味着,如果存在planType键,则无论该值是什么,都将返回该值。如果找不到value_if_empty,则会返回。

例如:

>>> a = {'key': 0}
>>> a.get('key', 1425)
0

JavaScript 。您的JavaScript版本没有做到这一点:它获取键的值,并且如果不存在这样的键,则返回undefined。然后使用||,使得结果的“真实性”为false时,它将采用正确的操作数(value_if_empty)。

但是,如果您要构造一个值为0的对象,那么它仍将使用value_if_empty,例如:

> a = {key: 0}
{ key: 0 }
> a['key'] || 1425
1425

我认为最接近Python版本的成员资格检查:

function tryget(obj, key, missing) {
    if(key in obj) {
        return obj[key];
    }
    else {
        return missing;
    }
}

然后我们可以用tryget({a: 0}, 'a', 1425)来调用它。

答案 1 :(得分:0)

您必须自己进行某种检查

一种方法是定义一个get函数并使用

例如

function get(object, key, default_value) {
    var result = object[key];
    return (typeof result !== "undefined") ? result : default_value;
}
相关问题