javascript - __hash__ 用于 JavaScript?

标签 javascript python hash associative-array dictionary

有没有办法给js自定义哈希中的对象,就像重写一样

__hash__()

在 python 中,让我们定义如何将给定对象散列到字典中。

我的基本问题是:使用什么哈希函数将 js 对象放入关联数组中,我可以覆盖它吗?

最佳答案

你的意思是使用对象作为键,你如何确保你再次访问该键?

神奇的方法是toString()。原来 JS 中的所有对象都使用字符串键,如果不是字符串,则调用 toString() 方法。

http://jsfiddle.net/udsdT/1/

var objA = {
    data: 'yay',
    toString: function() {
        return 'value_as_key';
    }
};

var objB = {
    data: 'some other totally data thing',
    toString: function() {
        return 'value_as_key';
    }
}


var foo = {};
foo[objA] = 'abc';
foo[objB] = 'def';
foo['value_as_key'] = 'qwe';
foo.value_as_key = 'omg';

foo[objA];           // 'omg'
foo[objB];           // 'omg'
foo['value_as_key']; // 'omg'
foo.value_as_key;    // 'omg'

虽然通常情况下,您真的不想使用整个对象作为键。特别是如果您不创建自己的 toString() 方法,因为基本对象上的默认 toString() 方法并不是非常棒...

({a:123}).toString() // [object Object]
({b:456}).toString() // [object Object]

var foo = {};
foo[{a:123}] = 'wtf';
foo[{asdf:9876}];       // 'wtf'
foo['[object Object]']; // 'wtf

关于javascript - __hash__ 用于 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11514716/

相关文章:

javascript - 如何选中和取消选中 div 内的所有复选框

javascript - 打印特定 div 时出错

javascript - 如何隐藏重叠的div而不删除内容

python - 无法导入 plotly.figure_factory

python - 屏蔽 numpy 数组中的圆形扇区

python - 多处理?多线程?水池?队列?暴力破解

arrays - 在 Perl 中迭代哈希和数组

javascript - 在 jquery 中将 ajax 数据强制评估为 XML

python - 如何在 Pandas 数据框中查找每列顺序的总和和计数?

arrays - 如何为redis展平哈希