JavaScript查询语言jLinq 2.2.0新特性解析

随着“Web 2.0”应用的普及,客户端对数据的排序、查询和管理能力变得越来越重要。jLinq结合了JSON数据,为JavaScript提供了一种LINQ风格的查询语言。如果还没有尝试过,可以在线体验其功能。本文将介绍jLinq 2.2.0版本的一些新特性。

智能比较

假设运行了以下命令: jLinq.from(users).less("firstname", 5).select(); 这看起来很简单,似乎是查询名字长度小于5个字符的用户。但实际上,旧版本的jLinq对命令的参数类型有特定要求。例如,使用less、lessEquals、greater、greaterEquals、between或betweenEquals等命令时,预期参数和查询字段都是数字类型。

在新版本中,jLinq变得更加智能,它会检查类型并返回所需的值以使查询工作。例如,如果使用less命令与字符串值一起使用,它会自动使用length属性而不是字符串值本身。

jLinq还对不同类型的命令更加智能。例如,以前contains命令只适用于字符串值,现在它适用于数组,或者将值转换为字符串然后进行检查。

11个新命令

以下是jLinq 2.2.0版本新增的11个命令:

  • attach(alias, function):执行并附加函数的返回值到记录上,使用提供的别名名称。
  • sum(field):返回一个对象,包含字段名总和的信息。
  • average(field):返回一个对象,包含字段名平均值的信息。
  • 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)的函数。返回值将被添加到列表中。如果没有使用选择方法,则返回以下对象。

错误修复

在Opera浏览器中,尝试排序记录时存在一个错误。不确定为什么,但基本上,Opera中的for循环确实存在差异。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485