【问题标题】:Alternatives to underscore.jsunderscore.js 的替代品
【发布时间】:2012-02-11 15:30:51
【问题描述】:

我正在寻找一个操作对象数组的 JavaScript 库,主要用于过滤、排序和分组/计数。

似乎 underscore.js 符合要求,但我有兴趣探索其他选项。 Underscore 有 60 多个函数,而我只需要几个。

例如,我希望某些数据表库包含这些功能,但我不知道去哪里找。

【问题讨论】:

  • 您可以随时尝试从source 中删除您需要的少数功能/方法
  • 根据 Raynos 的回答,我实际上在想我应该从 ES5 垫片中去掉我需要的东西。

标签: javascript json datatable underscore.js lodash


【解决方案1】:

您可能需要查看以下两个库:

【讨论】:

  • 谢谢。显然第二个只适用于数字数组,而我需要一个对象数组的解决方案。
【解决方案2】:

它被称为 JavaScript arr.filterarr.sortarr.length

您可以对数组应用任何数组方法,流行的有filtermapreduce,您可以通过组合它们来构建更复杂的操作。

如果你想迭代对象使用

Object.keys(o).forEach(function (key) {
  var val = o[key];
  ...
});

如果你生活在 ES3 世界中,下划线很有用,但 ES5 有你需要的一切,下划线所做的只是在它上面添加膨胀。

【讨论】:

  • arr.length?我没有给你程序中的海盗数量吗? ;)
  • 我生活在一个 IE 8 甚至 IE 7 仍然流行的世界...kangax.github.com/es5-compat-table
  • 谢谢!绝对是我想探索的一个选择。
  • @Raynos 如果我需要像 array_diff/array_intersect 这样的函数,你建议怎么做?构建一些自定义函数或使用库?
  • @danip require("interset/intersect") require("difflet")。有很多模块可以很好地完成单个任务。找到它们,使用它们。
【解决方案3】:

【讨论】:

    【解决方案4】:

    我知道这是旧的但你看过lodash 吗?来自网站:

    Underscore.js 的直接替换*。 [...]

    自定义构建可以轻松创建仅包含您需要的方法的 Lo-Dash 轻量级版本。最重要的是,我们会为您处理所有方法依赖和别名映射。

    【讨论】:

    • Lo-Dash 比 Underscore 有什么优势?下划线已经很小了。
    • @blaster:Lo-Dash 的优化程度更高。您可以在这里看到一些不错的可视化基准测试结果:dtao.github.io/lazy.js
    【解决方案5】:

    看看lazy.js (http://dtao.github.io/lazy.js/),类似于 underscore.js,但由于延迟评估而显着提高了性能

    【讨论】:

    • 这个库只有在你想将多个操作链接在一起时才能获得性能。执行单个 map()reduce() 将看到零性能增益(在某些情况下它实际上会更慢,尤其是与 lodash 相比)。但是,在处理非常大的数据集时,它的性能提升确实非常显着。
    • @idbehold:这取决于环境和数组的大小,因为不同的 JavaScript 引擎的行为非常不同。例如,在 Chrome 上,即使是小型数组并且没有链接 Lazy.js 也优于 Lo-Dash。但是在 Firefox 上,Lo-Dash 在这种情况下更快是对的。
    【解决方案6】:

    lowscore 是一个非常轻量级的下划线:

    • 你可以require只使用你需要的功能
    • 可以将 JS 大小减少大约 15k 缩小,或大约 50k 非缩小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 2010-11-08
      • 2012-01-25
      • 2015-08-05
      • 2011-01-01
      • 2011-10-24
      相关资源
      最近更新 更多