我需要在这样的javascript中制作字典
我不记得确切的符号,但它是这样的:
states_dictionary={ CT=[alex,harry], AK=[liza,alex], TX=[fred, harry] ........ }
Run Code Online (Sandbox Code Playgroud)
在javascript中有这样的东西吗?
JavaScript中的对象可以用作Hashtable(键必须是String)它是否像Hashtable一样表现良好的数据结构?
我的意思是,它是否在幕后实现为Hashtable?
更新:(1)我将HashMap更改为hashtable(2)我猜大多数浏览器都实现了相同的,如果不是为什么不呢?是否有任何要求如何在ECMAScript规范中实现它?
更新2:我理解,我只是想知道V8和Firefox JS VM如何实现Object.properties getters/setters?
假设我在一次车库拍卖中发现了一盒松散的鞋子(都是同一种),并且我创建了一个数组,其中每个鞋子都按鞋子的大小列出。
我想在数组中显示鞋子尺寸的配对值数量。例如,我有这个数组:
[10,10,10,10,20,20,20,30,50]
Run Code Online (Sandbox Code Playgroud)
我要显示,3因为我们有3对数字:
[10,10,10,10,20,20,20,30,50]
Run Code Online (Sandbox Code Playgroud)
还有3个剩余的值没有匹配的对值(20,30,50)。
我怎样才能做到这一点?
10,10
10,10
20,20
Run Code Online (Sandbox Code Playgroud)
我正在创建一个数据结构,其中包含我将用于反复检查以查看是否定义了某些值的数据结构.我想出了两个可能的解决方案,我想知道哪个更有效率,或者是否有比以往更好的方法:
1)使用数组: keys = ['key1' , 'key2', 'key3']
我可以像这样创建一个数组然后jQuery.inArray(keyToCheck, keys) > -1用来检查是否keyToCheck在我的数组中.
2)使用对象: keys = {key1 : 1, key2 : 1, key3: 1}
我可以创建此对象,然后使用keys[keyToCheck] || 0以查看是否keyToCheck已定义.
我不确定的是如何在javascript中实现搜索对象,以及它是否比jQuery.inArray循环数组更有效.这些方法之间是否存在性能差异?使用jQuery对我来说不是问题,因为我已经在我的代码中出于其他原因.
我正在尝试解决一个简单的挑战,我编写一个返回数组中第一个重复数字的函数.
这是我试过的:
function duplicateNumber(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = arr.length; j >= 0; j--) {
if (arr[i] === arr[j]) {
var dup_num = arr[i]
}
}
}
return dup_num
}
Run Code Online (Sandbox Code Playgroud)
它似乎没有工作.我究竟做错了什么?
刚刚意识到我也是从结束循环,从而开始并开始结束.
在数组= [3, 5, 6, 8, 5, 3]
重复的数字应该是5因为它在3之前重复.
考虑这个片段:
const obj1 = {1:1, 2:1, 3:1}
const obj2 = {1:1, 4:1, 9:1}
for(let key in obj1){
if(!(key ** 2 in obj2)) return false
}
Run Code Online (Sandbox Code Playgroud)
该算法的 Big O 可以认为是 O(n) 还是应该是 O(n^2),因为:
if(!(key ** 2 in obj2))
Run Code Online (Sandbox Code Playgroud)
被认为循环遍历obj2的所有项目(搜索)
**注意**:假设obj1和obj2的长度相等
附加说明:
我确实检查了之前的答案,并希望得到一个更新的答案,而不是Chrome特定的答案:JavaScript对象中的键查找性能
假设一个标准的javascript"dictionary"对象具有如下属性:
var myObject = {
Key1: ”Value1”,
Key2: ”Value2”,
Key3: ”Value3”,
…
Key500: ”Value500”
}
Run Code Online (Sandbox Code Playgroud)
有谁知道浏览器(等)是否内部优化了对这些属性的检索?
一个好的案例可能是自动排序+二进制搜索.
不太好的情况可能是简单的线性搜索.
EcmaScript标准称浏览器可以按照自己的意愿执行内部操作:
[browsers等]可以支持[object]的内部属性以及任何依赖于实现的行为,只要它与本文档中声明的特定主机对象限制一致即可.
和
未指定枚举属性的机制和顺序.
我真的不需要知道具体的优化,我只是想知道他们是否正在尝试优化超出简单的线性搜索.
那么,有没有人有"内部"知识?