标签: lodash

Lodash Debounce没有贬值

我正试图使用Lodash去抖动函数,虽然它正在调用函数,但它似乎根本没有去抖动它.我的问题似乎与我在其他地方在SO或Google 看到的错误一样(通常,他们没有调用_.debounce返回的函数).

我目前的超级简单实现如下(在Angular with CoffeeScript中):

  s.search = -> _.debounce( s._makeSearchRequest, 1000 )()

  s._makeSearchRequest = -> console.log("making search request")
Run Code Online (Sandbox Code Playgroud)

在JS中,我相信:

  s.search = function() { _.debounce( s._makeSearchRequest, 1000 )() }

  s._makeSearchRequest = function() { console.log("making search request") }
Run Code Online (Sandbox Code Playgroud)

s.search()通过在输入框中输入来运行,如果我很快输入乱码,控制台会在每次按键时打印出"发出搜索请求",这样每秒多次 - 表示它根本没有被去抖动.

我有什么想法我做错了吗?

javascript coffeescript underscore.js angularjs lodash

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

按日期对具有日期字段的对象数组进行排序

给出以下对象数组,我需要按日期字段升序对它们进行排序.

var myArray = [
  {
    name: "Joe Blow",
    date: "Mon Oct 31 2016 00:00:00 GMT-0700 (PDT)"
  },
  {
    name: "Sam Snead",
    date: "Sun Oct 30 2016 00:00:00 GMT-0700 (PDT)"
  },
  {
    name: "John Smith",
    date: "Sat Oct 29 2016 00:00:00 GMT-0700 (PDT)"  
  }
];
Run Code Online (Sandbox Code Playgroud)

所以在这个例子中,最终结果将是John Smith,Sam Snead和Joe Blow.

我正在尝试使用lodash的_.sortBy(),但无论我如何尝试使用它,我都无法进行任何排序:

_.sortBy(myArray, function(dateObj) {
  return dateObj.date;
});
Run Code Online (Sandbox Code Playgroud)

要么

_.sortBy(myArray, 'date');
Run Code Online (Sandbox Code Playgroud)

我需要更改什么来正确排序我的数组?我也有Moment.js,所以我可以根据需要使用它来格式化日期字符串.我尝试使用.unix()转换日期属性,但这并没有什么区别.

谢谢.

javascript sorting date lodash

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

是否可以在underscore.js或lodash模板中添加非html注释?

是否可以在underscore.js或lodash中添加非html注释?

就像是 :

<%-- We do this here because... %>
Run Code Online (Sandbox Code Playgroud)

那么评论不在生成的html代码中?

如果我写:

<!-- We do this here because... -->
Run Code Online (Sandbox Code Playgroud)

评论在结果html中.

谢谢.

javascript underscore.js lodash

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

与BackboneJS一起使用时,我应该使用与Underscore兼容的Lo-Dash版本吗?

我注意到Lo-Dash有一个特殊的Underscore兼容构建,表面上是为了解决函数参数/操作的差异(因为Lo-Dash是Underscore的超集,我假设Lo-Dash没有缺少Underscore函数).

我还注意到BackboneJS可以与Underscore或Lo-Dash一起使用.

我的问题:使用BackboneJS的"普通"Lo-Dash构建是不明智的吗?我无法找到人们是否在野外这样做的任何迹象,但这似乎是一个坏主意,特别是如果BackboneJS依赖于这些构建中可能不同的功能.同时,在Lo-Dash中使用一些较新的函数会很好,所以如果没有必要,我不想错过这些函数.

javascript backbone.js underscore.js lodash

21
推荐指数
3
解决办法
7018
查看次数

如何将具有重复值的数组映射到Javascript中的唯一数组?

我有以下数组:

var tst = 
[
 {"topicId":1,"subTopicId":1,"topicName":"a","subTopicName":"w"},
 {"topicId":1,"subTopicId":2,"topicName":"b","subTopicName":"x"},
 {"topicId":1,"subTopicId":3,"topicName":"c","subTopicName":"y"},
 {"topicId":2,"subTopicId":4,"topicName":"c","subTopicName":"z"}
]
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以将其映射到topicId> id和topicName> name的这种数组:

var t = 
[
  {"id":1,"name":"a"},
  {"id":2,"name":"c"}
]
Run Code Online (Sandbox Code Playgroud)

我正在使用现代浏览器,如果有帮助,我也有_lodash.请注意,tst数组中将有大约100行,因此我不需要非常优化的解决方案.简单易维护的解决方案更为重要.

javascript lodash

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

使用lodash从数组返回对象属性

我一直试图通过首先过滤它来返回对象的属性.这是我做的:

var characters = [
  { 'name': 'barney',  'age': 36, 'blocked': false },
  { 'name': 'fred',    'age': 40, 'blocked': true },
  { 'name': 'pebbles', 'age': 1,  'blocked': false }
];

_.find(characters, function(chr) {
     return  chr.age == 40
});
Run Code Online (Sandbox Code Playgroud)

它返回整个对象,因为我想返回特定属性.任何人都可以指导我如何做到这一点?

任何帮助将不胜感激.

javascript lodash

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

Lodash:返回其值(即Array)中包含给定元素(即字符串)的对象的第一个键

我有一个像这样的对象:

var obj = {
  "01": ["a","b"],
  "03": ["c","d"],
  "04": ["e","c"]
};
Run Code Online (Sandbox Code Playgroud)

并且我知道对象键值的数组元素(比如"c")然后如何使用lodash找到第一个键值即"03"而不使用if else?

我尝试使用lodash和if if:

var rId = "";
_.forOwn(obj, function (array, id) {
     if (_.indexOf(array, "c") >= 0) {
           rId = id;
           return false;
     }
});

console.log(rId); // "03"
Run Code Online (Sandbox Code Playgroud)

预期结果:第一个键,即"03",如果元素匹配"".

看到评论后:现在我也很想知道

我是否需要使用本机javascript(如果我们使用超过2个if块的情况下难以阅读的程序)或lodash方式(在一行中易于阅读的程序解决方案)?

javascript lodash

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

Lodash/javascript:比较两个集合并返回差异

我有两个对象数组:

我的表的元素不是原始值,而是复杂的对象.

array1 = [obj1,obj2,obj3,obj4]
array2 = [obj5,obj5,obj6,obj7]
Run Code Online (Sandbox Code Playgroud)

我想比较两个数组,看看数组2的元素已经存在于array1中,然后创建一个新的差异数组.

有什么建议吗?

javascript arrays javascript-objects lodash

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

Lodash:从多个构造单个对象 - 合并/覆盖属性

注意:我在lodash下提交了这个问题,因为我很确定它可以帮助我很好地解决这个问题,但是现在还没有把它放在它上面

我有一个描述不同用户角色及其权限的对象;

我会像"这样"定义10-15个角色(这不反映应用程序代码,但问题本身):

    var role1 = {
    views: {
        v1: {access: true},
        v2: {access: false},
        v#: {access: false}
    }
}

var role2 = {
    views: {
        v1: {access: false},
        v2: {access: true},
        v3: {access: true},
    }
}
Run Code Online (Sandbox Code Playgroud)

连接的用户将具有多个角色; 在那个例子中它可能是['role1', 'role2'],并且我需要构造一个单独的permissions对象,它将是所有用户角色中定义的所有道具的组合.

它基本上是基于白名单的,其中所有"真实"属性应该覆盖任何被定义为false的属性.因此,预期结果应该是:

permissions = {
    views: {
        v1: {access: true},
        v2: {access: true},
        v2: {access: true}
    }
}
Run Code Online (Sandbox Code Playgroud)

我不太确定如何在不依赖疯狂的嵌套循环的情况下解决这个问题

这是JSBin的一个起点:http://jsbin.com/usaQejOJ/1/edit?js,console

谢谢你的帮助!

javascript lodash

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

npm WARN弃用lodash@2.4.2:不再维护lodash @ <3.0.0

使用npm在全局安装grunt-cli时遇到错误.这与lodash有关:

npm WARN deprecated lodash@2.4.2:
lodash@<3.0.0 is no longer maintained. Upgrade to lodash@^3.0.0.
Run Code Online (Sandbox Code Playgroud)

以下是我正在使用的版本以及安装的全局包列表.

node: v5.1.0

npm: v3.5.0

npm list -g: http ://pastebin.com/NuJU3bY0


我试图在全局安装最新版本的lodash(v3.10.1),但在卸载我的grunt-cli全局包后再次出现错误,然后重新安装我的全局包.以下是安装日志:

sudo npm install lodash -g
/usr/local/lib
??? lodash@3.10.1

sudo npm install grunt-cli -g
npm WARN deprecated lodash@2.4.2: 
lodash@<3.0.0 is no longer maintained. Upgrade to lodash@^3.0.0.

/usr/local/bin/grunt -> /usr/local/lib/node_modules/grunt-cli/bin/grunt
/usr/local/lib
??? grunt-cli@0.1.13
  ??? findup-sync@0.1.3
  ? ??? glob@3.2.11
  ? ? ??? inherits@2.0.1
  ? ? ??? minimatch@0.3.0
  ? ?   ??? lru-cache@2.7.3
  ? ?   ??? sigmund@1.0.1
  ? ??? lodash@2.4.2 …
Run Code Online (Sandbox Code Playgroud)

node.js npm gruntjs lodash grunt-cli

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