5

我发现_.something(somevar, some_function_or_other_thing);“语法”非常难看。使用类似 ruby​​ 的迭代器和类似的东西有哪些好的替代方案:

10..times(function(i) {
   console.log(i);
});

uppercasefoobar = ["foo", "bar"].each(function(i) {
    return i.toUpperCase();
});

另外,我使用的是 node.js,所以它应该更多地关注代码而不是 DOM 的东西。

4

3 回答 3

5

很惊讶没有人提到Lo-Dash。Lo-Dash 是 Underscore 的超集,添加了许多方法。John-David Dalton(Lo-Dash 的创建者)在此处解释了两个库在回答 SO 问题时的主要区别。

编辑:找到了一篇详细的博客文章“向 Lo-Dash 打招呼”,详细介绍了库的背景以及与其他所谓的“js 实用工具带”的比较。

于 2014-01-28T01:52:26.413 回答
3

看起来你正在寻找Array.prototype.map

uppercasefoobar = ["foo", "bar"].map(function(i) {
    return i.toUpperCase();
});
// uppercasefoobar == ["FOO", "BAR"]

使用 underscore.js,您还可以编写:

_.range(10).forEach(function(i) {
    console.log(i);
});

编辑您还可以使用:

_(3).times(function(i) {
    console.log(i);
});

不像 ruby​​ 语法那样漂亮,但它可以完成工作。

通常,下划线提供了大多数函数的面向对象版本,其中:

_.something(variable, params);

相当于

_(variable).something(params);
于 2013-11-06T04:04:48.357 回答
2

自己找了一个!http://sugarjs.com/

(是的,我确实意识到扩展原生类本质上是分叉语言......这是我的动机......)

于 2013-11-23T05:27:36.813 回答