小编rya*_*anm的帖子

如何在不创建未定义值的情况下使用lodash进行深度设置

给出这个使用lodash的例子:

var object = {};
_.set(object, [ 1, 2 ], 5);
console.log(object);
Run Code Online (Sandbox Code Playgroud)

控制台中的结果对象是:

{
  1: [undefined, undefined, 5]
}
Run Code Online (Sandbox Code Playgroud)

现在想象一下,而不是整数2,你设置的时间戳为1445231475.你现在在一个非常大的数组中有1445231474个未定义的值,在一些_.set操作后将耗尽内存.

如果可能的话_.set,如何创建这个对象:

{
  1: {
    2: 5
  }
}
Run Code Online (Sandbox Code Playgroud)

如果2真的是一个像"a"这样的字符串,那么Lodash可能会强制"2"进入多个未定义值的数组.

我可以_.merge在必要时使用,但我会更兴奋使用_.set功能.

javascript lodash

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

Lodash _.debounce具有用于唯一参数变体的单独队列

我非常感谢lodash的去抖和油门功能.我相信我很好地理解了用例并且已经实现了几十次.

但是,根据要求,带有参数的_.debounce函数可能存在重大且难以捕获的错误.这是以下内容:

假设您有一个调用去抖函数debounceFn,该函数接受一个参数并且具有1000ms的去抖动间隔.

  • 100毫秒: debounceFn(1)
  • 200毫秒: debounceFn(2)
  • 300毫秒: debounceFn(2)
  • 400毫秒: debounceFn(1)
  • 500毫秒: debounceFn(1)

子函数最终将使用1的参数调用.这对于仅关注最后一个值的resize事件非常有用,但如果根据参数需要单独的debounced队列,该怎么办?也就是说,不是使用参数1调用的进程,而是使用参数1和参数2调用进程,但只调用一次(因为它们都是去抖动的).

作为扩展且稍微复杂的示例,请考虑下面的参数组合,其中组合生成唯一队列.

实际产量:

  • a: lime b: kiwi

期望的输出(前两个输出的顺序可以翻转)

  • a: apple b: banana
  • a: apple b: orange
  • a: lime b: kiwi

var process = function(a, b) {
  document.writeln('a: ' + a + ' b: ' + b);
};

var debounceProcess = _.debounce(function(a, b) {
  process(a, b);
}, 1000);


setTimeout(function() {
  debounceProcess('apple', 'orange');
}, 100);
setTimeout(function() {
  debounceProcess('apple', 'banana');
}, 200);
setTimeout(function() {
  debounceProcess('apple', 'orange');
}, 300); …
Run Code Online (Sandbox Code Playgroud)

javascript debouncing lodash

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

如何从浏览器控制台访问和测试AngularJS过滤器?

给定一个测试过滤器,假设这个'大写'过滤器将大写每个单词的第一个字母:

return function (input) {
  return (!!input) ? input.replace(/([^\W_]+[^\s-]*) */g, function (txt) {
    return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
  }) : '';
}
Run Code Online (Sandbox Code Playgroud)

如何从浏览器的JavaScript控制台测试此过滤器?

angularjs angularjs-service angularjs-filter

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