我有一个网页,它使用 JavaScript 从 Web 服务检索 JSON。 JSON 可以包含 10 条记录或 100 条记录。在网页上,我想提供一个灵活的界面,允许用户过滤和排序数据。过滤/排序数据应在浏览器中处理。我不希望网络服务进行过滤,因为每个操作都需要到服务器的往返,这看起来效率很低。
我有使用 JQuery 的经验,但解决方案不需要依赖于 JQuery。
我喜欢的许多选项都与 JavaScript 中的 LINQ 相关。下面是基于 LINQ 的 JavaScript 库的列表;我还添加了图书馆上次更新的日期。业界是否正在使用一个标准?
- linq.js - LINQ for JavaScript (2011年1月21日)
- JSINQ - LINQ to Objects for JavaScript (2010 年 4 月 4 日)
- LINQ to JavaScript (2009年6月16日)
无论选择哪个库,都需要支持跨浏览器。
我不要求该库必须与 JQuery 兼容,或者要求它必须使用 LINQ 的语法。但我确实喜欢 JQuery 和 LINQ 提供的灵活性。
最佳答案
重要的一点是,JSON 数据只是一个 JavaScript 对象,因此您可以使用任何允许您操作对象的库。
我会推荐underscore.js作为解决此类问题的通用实用带。
这样我们就可以轻松地操作数据
var jsonData = $.getJSON(url);
var filtered = _.filter(jsonData, function(val, key) {
if (val > 10) return true;
});
var sorted = _.sortBy(jsonData, function(val, key) {
return order(val);
});
过滤和排序取决于您的数据模型。我建议您使用某种包装器来表示客户端上的数据模型。
var MyModel = function(json) {
var data = json;
this.filterBySize = function(size) {
data = _.filter(data, function(val) {
return val > size
});
};
...
}
var model = new MyModel(json);
model.filterBySize(10);
另一种方法是使用大型库,例如 backbone.js并为您的记录创建一个 Backbone.Model
并为您的整个数据集创建一个 Backbone.Collection
。然后您可以简单地在您的集合上调用 .sort
、.sortBy
、.filter
。
如果您要发挥 Backbone 作用,那么您将转向客户端 MVC,并且您可以使用整个工具集将数据和 UI 很好地连接在一起。只需用您自己的服务器通信覆盖 Backbone.sync
即可。
关于javascript - 哪些库可用于在 JavaScript 中操作 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5531547/