相关疑难解决方法(0)

lodash和下划线之间的差异

为什么有人更喜欢lodash.jsunderscore.js实用程序库而不是另一个?

Lodash似乎是下划线的替代品,后者已经存在了更长时间.

我认为两者都很精彩,但我对他们如何努力进行有根据的比较并不了解,我想更多地了解这些差异.

javascript underscore.js lodash

1566
推荐指数
9
解决办法
31万
查看次数

获取键/值javascript对象的键的最佳方法

如果我有一个JS对象,如:

var foo = { 'bar' : 'baz' }
Run Code Online (Sandbox Code Playgroud)

如果我知道foo有基本的键/值结构,但不知道键的名称,最简单的方法是什么?for ... in$.each()?我希望有更好的东西......

javascript jquery

167
推荐指数
12
解决办法
43万
查看次数

JavaScript中的对象/数组的性能如何?(专门针对Google V8)

与JavaScript中的数组和对象(尤其是Google V8)相关的性能对于文档来说非常有趣.我在互联网上找不到关于这个主题的综合文章.

我知道一些对象使用类作为它的底层数据结构.如果有很多属性,它有时被视为哈希表?

我也理解,数组有时被视为C++数组(即快速随机索引,慢速删除和调整大小).而且,其他时候,它们更像对象(快速索引,快速插入/删除,更多内存).并且,有时它们可​​能存储为链接列表(即慢速随机索引,在开头/结尾快速删除/插入)

JavaScript中的数组/对象检索和操作的精确性能是什么?(专门针对Google V8)

更具体地说,它对性能的影响如下:

  • 向Object添加属性
  • 从Object中删除属性
  • 索引对象中的属性
  • 将项添加到数组
  • 从数组中删除项目
  • 索引数组中的项目
  • 调用Array.pop()
  • 调用Array.push()
  • 调用Array.shift()
  • 调用Array.unshift()
  • 调用Array.slice()

任何文章或链接的更多细节也将不胜感激.:)

编辑:我真的很想知道JavaScript数组和对象是如何工作的.此外,在什么情况下 V8引擎"知道""转换"到另一个数据结构?

例如,假设我用...创建一个数组

var arr = [];
arr[10000000] = 20;
arr.push(21);
Run Code Online (Sandbox Code Playgroud)

这里到底发生了什么?

或者......这个怎么样...... ???

var arr = [];
//Add lots of items
for(var i = 0; i < 1000000; i++)
    arr[i] = Math.random();
//Now I use it like a queue...
for(var i = 0; i < arr.length; i++)
{
    var item = arr[i].shift();
    //Do something with item...
} …
Run Code Online (Sandbox Code Playgroud)

javascript arrays performance v8 object

104
推荐指数
2
解决办法
4万
查看次数

为什么改变对象的[[prototype]]对性能有害?

标准 setPrototypeOf函数的MDN文档 以及非标准属性: __proto__

强烈建议不要改变对象的[[Prototype]],无论如何实现,因为它非常慢并且不可避免地减慢了现代JavaScript实现中后续执行的速度.

使用Function.prototype添加属性是添加成员函数JavaScript类的方式.然后如下所示:

function Foo(){}
function bar(){}

var foo = new Foo();

// This is bad: 
//foo.__proto__.bar = bar;

// But this is okay
Foo.prototype.bar = bar;

// Both cause this to be true: 
console.log(foo.__proto__.bar == bar); // true
Run Code Online (Sandbox Code Playgroud)

为什么foo.__proto__.bar = bar;不好?如果它的坏不是Foo.prototype.bar = bar;那么糟糕?

那么为什么会出现这样的警告:它非常缓慢并且不可避免地减慢了现代JavaScript实现中后续执行的速度.当然Foo.prototype.bar = bar;不是那么糟糕.

更新也许通过突变他们意味着重新分配.见接受的答案.

javascript performance prototype prototype-chain

54
推荐指数
1
解决办法
3万
查看次数

在json中获取密钥的索引

我有一个像这样的json:

json = { "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" }
Run Code Online (Sandbox Code Playgroud)

现在,我想知道一个密钥的索引,在json中说"key2" - 这是1.有办法吗?

javascript json

20
推荐指数
4
解决办法
9万
查看次数

从实例中获取TypeScript枚举名称

我有以下TypeScript枚举:

enum Country {
    BR = "Brazil",
    NO = "Norway"
}
Run Code Online (Sandbox Code Playgroud)

然后想象我有一个方法,它接受一个Country参数,如下所示:

someFunc = (country: Country): void => {
    console.log(country) //Will print "Brazil" if country = Country.BR
    console.log(Country[country]) //Same as above
    console.log(???) //I want to print "BR" if country = Country.BR
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决第三个console.log陈述?

如何获得枚举密钥?

问候

javascript enums typescript reactjs

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

如何按值删除javascript对象项?

例如,以下对象:

var fruits = {
    "red" : "apple",
    "blue" : "blueberry",
    "yellow" : "banana"
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用delete fruits["red"]键名删除它,但是如何通过水果名称删除对象项?

javascript object

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

使用JavaScript中对象的值获取密钥?

c =      {
            "UNKNOWN_ERR" : 0,
            "INDEX_SIZE_ERR" : 1,
            "DOMSTRING_SIZE_ERR" : 2,
            "HIERARCHY_REQUEST_ERR" : 3,
            "WRONG_DOCUMENT_ERR" : 4,
            "INVALID_CHARACTER_ERR" : 5,
            "NO_DATA_ALLOWED_ERR" : 6,
            "NO_MODIFICATION_ALLOWED_ERR" : 7,
            "NOT_FOUND_ERR" : 8,
            "NOT_SUPPORTED_ERR" : 9}
Run Code Online (Sandbox Code Playgroud)

要使用密钥获取值很简单,我只需使用key in c["UNKNOWN_ERR"]get 0,因为所有值都是唯一的,从值(errorcode)获取密钥(消息)是安全的.

有没有一种标准的方法可以做到这一点,还是我需要编写一个查看所有键并搜索该特定值的函数?

javascript object hashmap

6
推荐指数
3
解决办法
3万
查看次数

EmberJS notifyPropertyChange没有让它成为观察者?

我有一个组件,里面有一个子组件列表(用父组件内的yield绘制):

parent-component
  for item in items
    child-component item=item childProperty=parentProperty
Run Code Online (Sandbox Code Playgroud)

在子组件内部,我有一个关于"childProperty"的观察者,它会在parentProperty更改时正确触发.问题是我想在财产没有实际改变的时候触发观察者.

要做到这一点,在我的父组件中,我有:

this.notifyPropertyChange('parentProperty')

出于某种原因,这不是对子组件的影响.这是一个JS bin显示:

http://emberjs.jsbin.com/caxedatogazo/1/edit

虽然我很乐意更多地讨论我的用例,但我更感兴趣的是JS bin是否应该工作,如果没有,为什么..

非常感谢您的帮助!

ember.js

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

如何获取变量的名称

我有

let name = 'enzo'
let age = 20
Run Code Online (Sandbox Code Playgroud)

如果我记录姓名console.log(name)和年龄console.log(age),它会显示

恩佐
20

但我期待这种效果

console.log("name:",name)
console.log("age:",age)
Run Code Online (Sandbox Code Playgroud)

它会显示出来

姓名:恩佐
年龄:20岁

那么如何才能得到变量的名称?

javascript

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