草庐IT

javascript - 如何使用 sinon.js 对回调函数的内容进行单元测试

如何使用sinon.js模拟框架在回调函数中测试代码?JSFiddle:http://jsfiddle.net/ruslans/CE5e2/varservice=function(){return{getData:function(callback){returncallback([1,2,3,4,5]);}}};varmodel=function(svc){return{data:[],init:function(){varself=this;svc.getData(function(serviceData){self.data=serviceData;//***testthisli

javascript - 使用描述对时间戳进行分组

我有使用时间表应用程序记录的任务数据。我正在尝试解析每个任务的休息时间。附加到任务的中断字符串示例如下所示:1:19pm–10:33pmatetacos10:35pm–11:38pm12:40am–1:24amtookanap我需要将其分组为时间戳及其相关描述。以上内容应按如下方式分组:1:19pm–10:33pmatetacos10:35pm–11:38pm12:40am–1:24amtookanap休息间隔的描述基本上可以有任何字符或任何长度。一些间隔没有描述。我认为正则表达式是获取一组间隔及其描述(如果有的话)的最简单方法。到目前为止我有:\d{1,2}:\d{2}[ap]m\s

javascript - Lodash:对对象数组进行排序,首先是字母,然后是数字

我有一个对象数组,比方说:varobjects=[{name:'A'},{name:'1'},{name:'B'}]知道我可以使用LodashsortBy对其进行排序:objects=_.sortBy(objects,'name')这将导致:[{name:'1'},{name:'A'},{name:'B'}]但我想要的输出是这样的:[{name:'A'},{name:'B'},{name:'1'}]请帮忙。 最佳答案 使用Array#sort你可以应用这个逻辑://Ifbotharenumbersorbotharenotnumber

javascript - 使用 Marionette 对 Collection View 中的项目进行分组

我正在使用backbone和marionette.js构建一个应用程序。我计划使用CollectionView来展示一些项目,然后允许对它们进行过滤、排序和分组。我想知道是否有任何好的设计想法以分组方式实际附加html。我有一些想法,但我想知道是否有人可以提供更好的设计。我的第一个想法是更改CollectionView上的appendHtml方法,如果启用了分组,我可以让appendHtml函数查找或创建子组的bin并将subview放入其中。appendHtml:function(collectionView,itemView,index){var$container=this.ge

javascript - 在 JavaScript 中对大型(ish)数字数组进行排序的最快方法是什么

在我的应用程序中,我需要对随机数的大型数组(100,000到1,000,000之间)进行排序。我一直在使用内置的array.sort(comparisonFunction),其中comparisonFunction如下所示:functioncomparisonFunction(a,b){returna-b;}这工作得很好,但我读过(例如,NativeJavaScriptsortperformingslowerthanimplementedmergesortandquicksort)有更快的选择,特别是如果您的要求满足特定条件:我只需要对数字进行排序(例如,不是对象或字母数字数据)数据是

javascript - 按相对位置对数组排序

示例对象数组:[{id:'a',beforeId:null},{id:'b',beforeId:'c'},{id:'c',beforeId:'a'},{id:'d',beforeId:'b'}]输出顺序:d-b-c-a;每个元素根据其beforeId属性相对于其他元素排序。我可以创建一个临时数组并对上面的数组进行排序。可以使用array.sort进行排序吗? 最佳答案 您可以使用关系构建一个对象,并通过将对象与beforeId:null一起使用来生成结果,并取消移位结果数组的所有对象。下一个对象是以实际val为键的对象。复杂度:O(

javascript:对字符串使用大于号

我对这个理解很困惑"9">"099"返回true而"9">"99"返回false(9只是一个例子,就像"x">"xabc"返回false而"x">"abc"返回true,其中a小于x但abc大于x并且a、b、c、x是数字)。提前致谢。 最佳答案 itishappeninglike"x">"xabc"returnstrueand"x">"abc"returnsfalse,whereaissmallerthanxbutabcisgreaterthaxanda,b,c,xarenumbers)是的(除了"abc"不大于"x",而且那些是字

javascript - 如何对Web Push做特征检测?

是否有任何简单的方法可以在浏览器(桌面和移动设备)中检测WebPushAPI的特性 最佳答案 有些浏览器版本只支持serviceworker,不支持PushAPI。建议您尝试检测PushAPI本身。如果您需要以同步方式(即不等待Promise)检查浏览器支持,您可以使用这个(从PushpadSDK复制):functionisPushApiSupported(){return'PushManager'inwindow;} 关于javascript-如何对WebPush做特征检测?,我们在S

javascript - 对 WebKit 中的文本区域强制进行拼写检查

我正在创建一个基于浏览器的QC/数据输入应用程序,它可以让人们编辑OCRed文件,这些文件自然会有大量错误。数据block放在文本区域中以便于检查,但红色下划线仅在用户手动将光标置于拼写错误的单词时才会出现。有没有办法强制WebKit将小红色拼写检查下划线添加到文本区域? 最佳答案 本质上,您需要使用选择api将插入点移动到每个单词上,以使Safari突出显示它。这是扫描前一千个单词的示例...textarea=document.getElementById("mytextarea");textarea.focus();varsel

javascript - 获取对运算符后面的 JavaScript 函数对象的引用

这是一个lisp过程,它简单地将“a”加到“b”的绝对值上:(define(a-plus-abs-bab)((if(>b0)+-)ab))我认为这很漂亮,我正在尝试找到用JavaScript编写它的最佳方式。但是我的JavaScript代码并不漂亮:varplus=function(a,b){returna+b;};varminus=function(a,b){returna-b;};varaPlusAbsB=function(a,b){return(b>0?plus:minus)(a,b);}主要问题是我不能像使用lisp那样使用+和-符号作为对它们真正表示的函数的引用。谁能想出一种