我正试图使用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()通过在输入框中输入来运行,如果我很快输入乱码,控制台会在每次按键时打印出"发出搜索请求",这样每秒多次 - 表示它根本没有被去抖动.
我有什么想法我做错了吗?
给出以下对象数组,我需要按日期字段升序对它们进行排序.
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()转换日期属性,但这并没有什么区别.
谢谢.
是否可以在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中.
谢谢.
我注意到Lo-Dash有一个特殊的Underscore兼容构建,表面上是为了解决函数参数/操作的差异(因为Lo-Dash是Underscore的超集,我假设Lo-Dash没有缺少Underscore函数).
我还注意到BackboneJS可以与Underscore或Lo-Dash一起使用.
我的问题:使用BackboneJS的"普通"Lo-Dash构建是不明智的吗?我无法找到人们是否在野外这样做的任何迹象,但这似乎是一个坏主意,特别是如果BackboneJS依赖于这些构建中可能不同的功能.同时,在Lo-Dash中使用一些较新的函数会很好,所以如果没有必要,我不想错过这些函数.
我有以下数组:
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行,因此我不需要非常优化的解决方案.简单易维护的解决方案更为重要.
我一直试图通过首先过滤它来返回对象的属性.这是我做的:
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)
它返回整个对象,因为我想返回特定属性.任何人都可以指导我如何做到这一点?
任何帮助将不胜感激.
我有一个像这样的对象:
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方式(在一行中易于阅读的程序解决方案)?
我有两个对象数组:
我的表的元素不是原始值,而是复杂的对象.
array1 = [obj1,obj2,obj3,obj4]
array2 = [obj5,obj5,obj6,obj7]
Run Code Online (Sandbox Code Playgroud)
我想比较两个数组,看看数组2的元素已经存在于array1中,然后创建一个新的差异数组.
有什么建议吗?
注意:我在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
谢谢你的帮助!
使用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) lodash ×10
javascript ×9
angularjs ×1
arrays ×1
backbone.js ×1
coffeescript ×1
date ×1
grunt-cli ×1
gruntjs ×1
node.js ×1
npm ×1
sorting ×1