我正在使用Json在客户端(javascript)表示数据,我将.net数据表对象转换为json,现在需要对Json数据应用过滤器。我使用_.where来应用基本数据过滤器,但需要复杂的过滤,如:
where = (stundentID = 55 and school='abc') AND (City='xyz' or City ='abc')
它是我们在Oracle或sql server查询中使用的基本类型的过滤。现在,我如何在Json或javascript结构上使用underscore.js或某些东西equivelant来应用这种机制。我可能还需要在javascript上使用聚合[Sum(sales)== 500]来获取前N个记录的查询。等待你宝贵的建议。
谢谢,
答案 0 :(得分:4)
假设您将此JSON表示为常规JavaScript对象 - 毕竟没有JSON对象 - 您最好的选择可能是使用linq.js
你可以做以下事情:
var studentFilteredArray =
Enumerable.From(students)
.Where(function(s) { return s.studenId == 55; })
.OrderBy(function(s) { return s.LastName; })
.ToArray();
或者从上面的示例开始:
.Where(function(s) {
return s.studentID === 55 && s.school === 'abc' && (s.City === 'xyz' || s.City === 'abc')
});
答案 1 :(得分:0)
您还可以尝试alasql.js,您可以在其中使用标准SQL SELECT WHERE语句。 Alasql专门用于处理JSON数组,如数据库中的表。
// Create database and describe the table
var db = new alasql.Database();
db.exec('CREATE TABLE students ([studentID] INT, school STRING, [City] STRING)');
// Assign you array here
db.tables.students.data = [
{studentID: 55, school: 'abc', City:'abc'},
{studentID: 56, school: 'klm', City:'xyz'},
{studentID: 57, school: 'nyz', City:'xyz'}
];
// Use regular SQL
console.log(db.exec("SELECT * FROM students "
+" WHERE ([studentID] = 55 AND school='abc') AND ([City]='xyz' OR [City] ='abc')"));
试试这个例子in jsFiddle。