相关疑难解决方法(0)

有像python这样的javascript中的字典吗?

我需要在这样的javascript中制作字典

我不记得确切的符号,但它是这样的:

states_dictionary={ CT=[alex,harry], AK=[liza,alex], TX=[fred, harry] ........ }
Run Code Online (Sandbox Code Playgroud)

在javascript中有这样的东西吗?

javascript python

82
推荐指数
5
解决办法
10万
查看次数

JavaScript VM如何实现Object属性访问?是Hashtable吗?

JavaScript中的对象可以用作Hashtable(键必须是String)它是否像Hashtable一样表现良好的数据结构?

我的意思是,它是否在幕后实现为Hashtable?

更新:(1)我将HashMap更改为hashtable(2)我猜大多数浏览器都实现了相同的,如果不是为什么不呢?是否有任何要求如何在ECMAScript规范中实现它?

更新2:我理解,我只是想知道V8和Firefox JS VM如何实现Object.properties getters/setters?

javascript browser

23
推荐指数
3
解决办法
6065
查看次数

如何仅返回数组中匹配对值的数量?

假设我在一次车库拍卖中发现了一盒松散的鞋子(都是同一种),并且我创建了一个数组,其中每个鞋子都按鞋子的大小列出。

我想在数组中显示鞋子尺寸的配对值数量。例如,我有这个数组:

[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)。

我怎样才能做到这一点?

javascript arrays

12
推荐指数
2
解决办法
518
查看次数

检查对象的键是否比在数组中搜索字符串更有效?

我正在创建一个数据结构,其中包含我将用于反复检查以查看是否定义了某些值的数据结构.我想出了两个可能的解决方案,我想知道哪个更有效率,或者是否有比以往更好的方法:

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对我来说不是问题,因为我已经在我的代码中出于其他原因.

javascript arrays jquery

2
推荐指数
1
解决办法
1969
查看次数

返回数组中的第一个重复数字

我正在尝试解决一个简单的挑战,我编写一个返回数组中第一个重复数字的函数.

这是我试过的:

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之前重复.

javascript arrays algorithm array-algorithms

2
推荐指数
1
解决办法
1942
查看次数

for循环内“in”运算符的大O

考虑这个片段:

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的长度相等

javascript big-o

2
推荐指数
1
解决办法
292
查看次数

浏览器(等)**内部优化**他们对javascript对象属性的检索吗?

附加说明:

我确实检查了之前的答案,并希望得到一个更新的答案,而不是Chrome特定的答案:JavaScript对象中的键查找性能

假设一个标准的javascript"dictionary"对象具有如下属性:

var myObject = {
   Key1: ”Value1”,
   Key2: ”Value2”,
   Key3: ”Value3”,
   …
   Key500: ”Value500”
}
Run Code Online (Sandbox Code Playgroud)

有谁知道浏览器(等)是否内部优化了对这些属性的检索?

一个好的案例可能是自动排序+二进制搜索.

不太好的情况可能是简单的线性搜索.

EcmaScript标准称浏览器可以按照自己的意愿执行内部操作:

[browsers等]可以支持[object]的内部属性以及任何依赖于实现的行为,只要它与本文档中声明的特定主机对象限制一致即可.

未指定枚举属性的机制和顺序.

我真的不需要知道具体的优化,我只是想知道他们是否正在尝试优化超出简单的线性搜索.

那么,有没有人有"内部"知识?

javascript object

1
推荐指数
1
解决办法
148
查看次数