Tag: 字典

通过这个node.js字典获得值的关键

我正在使用这个node.js收集模块。 http://www.collectionsjs.com/ 我想从字典中获得价值的关键。 这是我的代码; "use strict"; var Dict = require("collections/dict"); var Data_type = new Dict( { "00": "DATA_NOT", "01": "DATA_SENSOR", "02": "DATA_SENSOR2", "03": "DATA_SENSOR3", }); 从钥匙中获得价值很简单。 Data_type.get("00"); 将返回DATA_NOT 。 但是,我在获得价值的钥匙方面遇到了问题。 最好,我想做一些像Data_type.getKey("DATA_NOT"); 并返回"00" 。 欢迎任何其他方法。

JavaScript地图对象是否被索引来优化map.get?

在V8的幕后,JavaScript-Map-object的键以某种方式build立索引,以优化map.get方法? 或者map.get()只是简单地遍历整个地图,直到发现一个关键匹配? 我对map.get的500,000个以上键/值对的较大映射的效率感兴趣。 我有这么多的映射,我只想caching在内存中,而不是查询数据库的密钥已经索引的快速检索。 在我看来,查询RAM而不是数据库会更快,如果Map对象的键在某种程度上在后台索引。 抽象: function randomUniqueThing() { // returns (magically) a unique random: // string, number, function, array or object. } var objMap = new Map(); var count = 0; var thing1,thing2; while(count < 500000) { thing1 = randomUniqueThing(); thing2 = randomUniqueThing(); objMap.set(thing1, thing2); count++; } var lastValue = objMap.get(thing1); // Will getting […]

结合两个字典:JavaScript中的perl“hashrefslice”语法?

我有单独的configuration文件,因为其中包含密码和其他敏感数据,我不介意世界看到。 所以我们说我有: sensitivedata = { password : 'foobaz', hostname : 'quux' }; globalconfig = { timeout : 86400, port : 5190 }; 我希望globalconfig有字段password和hostname 。 我可以这样做: globalconfig.hostname = sensitivedata.hostname; globalconfig.password = sensitivedata.password; 但是当有很多领域时,这是很乏味的。 作为一名perl程序员,我想要做这样的事情: @{ $globalconfig }{ keys %{ $sensitivedata } } = @{ $sensitivedata }{ keys %{ $sensitivedata } }; # or … @{ $globalconfig […]

用于C#的类似V8的哈希表?

我正在编程一个公寓和房屋租赁网站。 由于不会有超过10'000个物业出租,把所有物品都存入记忆体是没有问题的。 现在,当用户想要search特定的一个,他可以定义非常多的价格,房间,自动扶梯等filter。 每个属性都有一组非常不同的属性。 一个属性可能具有另一个属性不具有的属性。 所以,在C#中创build一个具有所有属性的类,而仅使用其中一些属性对我来说不是一个好主意。 我决定使用一个字典来代替。 稍后的一些基准testing中,我发现,Dictionary作为一个类访问属性的速度要慢大约40倍。 我也做了一个node.js的基准,它只是用对象作为字典。 这是非常有趣的,因为node.js中完全相同的程序比使用本地类的C#示例执行得更好。 其实我得到了以下结果: C#字典:〜820ms C#类:〜26ms Node.js对象:〜24ms 每个基准都按照相同的标准search1000万个物体。 我知道,由于Google的V8引擎,Node.js版本非常快。 你知道是否有一个C#类使用与V8引擎类似的技术,并获得几乎相同的性能? C#字典基准 namespace Test { class Program { static void Main(string[] args) { PropertyList p = new PropertyList(); long startTime = DateTime.Now.Ticks; for (int i = 0; i < 100; i++) { p.Search(); } Console.WriteLine((DateTime.Now.Ticks – startTime) / 10000); […]

在ESLint中replace按位操作

我试图应用这个代码: 如何通过点击Leaflet map (包含位运算符“<<”) 来获取tile的XYZ坐标 。 在运行它的环境(NodeJS,ExpressJS,AngularJS)中,代码在编译时由ESLint检查,但是我需要在链接上给出的解决scheme。 编译时出现这个错误。 意想不到的使用'<<'没有按位 根据这个链接: http ://eslint.org/docs/rules/no-bitwise – ESLint不允许按位运算符。 有没有办法绕过这个规则,如果没有,提供一个替代的计算,产生类似的结果按位操作“<<”? 我希望我的问题很清楚,谢谢。

为什么数组上的js映射修改原始数组?

我很困惑的是map()的行为。 我有这样的对象的数组: const products = [{ …, 'productType' = 'premium', … }, …] 我将这个数组传递给一个函数,该函数应该返回相同的数组,但所有产品都是免费的: [{ …, 'productType' = 'free', … }, …] function是: const freeProduct = function(products){ return products.map(x => x.productType = "free") } 其中返回以下数组: ["free", "free", …] 所以我重写了我的function是: const freeProduct = function(products){ return products.map(x => {x.productType = "free"; return x}) } 它按照预期返回数组。 但是! 这就是我放松的时刻,在这两种情况下我的原始产品arrays被修改。 […]