jLinq 2.2.0 发布!





5.00/5 (7投票s)
jLinq 是一种 JavaScript 查询语言,可以轻松处理大量信息数组。今天,jLinq 2.2.0 发布,它提供了新命令、错误修复等!
听说过 jLinq 吗?如果没有,没关系。这是我个人将 LINQ 风格的查询语言用于 JavaScript 的项目。随着所有这些“Web 2.0”应用程序的兴起,在客户端排序、查询和管理记录的能力可能会变得必不可少。将 jLinq 与您已有的 JSON 数据一起使用,将是一套强大的组合。
如果您还没有尝试过,那么有一个 在线版本可供您使用并查看其实际效果。
以下是 jLinq 2.2.0 中的一些新功能。
更智能的比较
假设您运行了以下命令…
jLinq.from(users)
.less("firstname", 5)
.select();
看起来很简单,名字长度小于 5 个字符?
不…
jLinq 的先前版本会根据命令期望特定的数据类型。例如,如果您使用了 less
、lessEquals
、greater
、greaterEquals
、between
或 betweenEquals
,那么预期的参数是数字,您正在查询的字段也是如此。
在新版本中,您将找到类似下面的代码,用于检查值。
//get the parameter value
value = query.helper.when(value, {
number:function() { return value; },
other:function() { return value.length; }
});
//determine how to check this against the value
return query.when({
string:function() {
return (query.value.length < value);
},
array:function() {
return (query.value.length < value);
},
other:function() {
return (query.value < value);
}
});
jLinq 不再进行任何假设,而是会检查类型并返回使查询正常工作所需的值。例如,如果您将“less”与 string
值一起使用,它将自动使用长度属性而不是 string
值本身。
jLinq 在不同命令类型方面也更加智能。例如,以前 .contains()
只对 string
值有效。现在它适用于数组,或者将值转换为 string
然后检查结果。
11 个新命令
attach(alias, function)
:执行您的函数并使用您提供的别名将函数的返回值附加到记录上。sum(field)
:返回一个对象,其中包含有关使用的字段名的总和信息。
返回{<br /> count:计算的记录数,<br /> result:所选所有记录的总和,<br /> records:用于计算总和的记录<br /> }
average(field)
:返回一个对象,其中包含有关使用的字段名的平均值信息。
返回{<br /> total:计算平均值之前的总和,<br /> count:使用的记录数,<br /> result:所选所有记录的平均值,<br /> records:用于计算平均值的记录<br /> }
max(field)
:找到提供的字段名的最大值。min(field)
:找到提供的字段名的最小值。except(collection)
:比较第二个记录集,仅返回在比较列表中找不到的记录。返回一个新的 jLinq 对象。(示例)intersect(collection)
:比较第二个记录集,仅返回在两个列表中都找到的记录。返回一个新的 jLinq 对象。(示例)union(collection)
:比较第二个记录集,仅返回两个列表中唯一的记录。返回一个新的 jLinq 对象。(示例)skipWhile(delegate)
:跳过选择记录,直到您的函数返回第一个“false
”结果。在那之后,将选择所有记录。返回一个结果数组。(示例)takeWhile(delegate)
:选择记录,直到您的函数返回第一个“false
”结果。在那之后,将忽略所有记录。返回一个结果数组。(示例)selectMany(collection, compareFunction, selectionFunction)
:将当前查询的每个值与提供的集合数组进行比较(示例)。对于每次成功比较,都会向您的结果中添加一条新记录。如果您使用自己的选择方法,则需要编写一个类似function(queryRecord, compareRecord) {
的函数。返回值将被添加到列表中。如果未使用选择方法,则将返回以下对象。
返回{<br /> source:与 jLinq 查询中的记录进行比较,<br /> compare:与集合数组中的记录进行比较<br /> }
Bug 修复
在尝试排序记录时,Opera 存在一个 bug。我不确定为什么,但基本上,Opera 中的 for
循环确实存在差异。
jLinq 测试
如果您有兴趣创建自己的 jLinq 扩展方法,现在可以下载一系列测试,以确定您的命令不会破坏 jLinq 中的其他任何内容。
总结
呼!您还在看吗?您一定很敬业!
现在,我意识到如何使用 jLinq 可能仍然存在一些困惑。我目前正在制作一些屏幕录像,以便分享以帮助人们入门。
如果您对即将发布的屏幕录像有什么建议,请将您的想法发送给我,我会将其添加到我的列表中。