Underscore.js _.where()函数

Underscore.js是Javascript的一个常用库,提供了很多有用的函数和工具,包括_.where()函数。

_.where()函数简介

_.where()函数是Underscore.js中的一个函数,可以用于从一个包含多个对象的数组中,筛选出符合指定条件的对象(或多个对象)。

函数定义为:

_.where(list, properties)

其中,list参数表示需要筛选的数组,而properties参数则表示需要匹配的键和值的对象。

下面通过两个示例来演示该函数的使用方法。

示例1

假设我们有以下一个包含多个学生数据的数组:

var students = [
    {name: 'Tom', age: 20, gender: 'M'},
    {name: 'Kate', age: 19, gender: 'F'},
    {name: 'Mike', age: 21, gender: 'M'},
    {name: 'Alice', age: 20, gender: 'F'}
];

现在想要从该数组中,找出所有年龄为20岁的学生。可以使用_.where()函数来实现:

var result = _.where(students, {age: 20});

这里传入了students数组和一个包含了age属性值为20的对象作为properties参数。函数返回的result值就为:

[
    {name: 'Tom', age: 20, gender: 'M'},
    {name: 'Alice', age: 20, gender: 'F'}
]

可以看到,返回了两个学生对象,这两个对象的年龄都为20岁。

示例2

再看一个更复杂的例子。假设我们需要提取一个包含多个商品信息的数组中,名称为“Apple”且价格低于$2的所有商品。数组如下:

var products = [
    {name: 'Apple', price: 1.2, category: 'Fruit'},
    {name: 'Orange', price: 2.5, category: 'Fruit'},
    {name: 'Milk', price: 3.5, category: 'Dairy'},
    {name: 'Coke', price: 1.5, category: 'Drink'},
    {name: 'Bread', price: 2.1, category: 'Bakery'},
    {name: 'Pear', price: 0.8, category: 'Fruit'}
];

可以像下面这样使用_.where()函数来提取所需商品:

var result = _.where(products, {name: 'Apple', price: function(p) { return p < 2; }});

这里传入了products数组和一个对象,其中包含了两个属性:nameprice。其中name属性值为'Apple',price属性是一个函数:

function(p) { return p < 2; }

该函数会判断价格是否小于2。因为price属性用了函数,所以可以对数组中的每一个元素进行判断,只筛选符合条件的元素。

函数返回的result值就为:

[
    {name: 'Apple', price: 1.2, category: 'Fruit'}
]

可以看到,返回了一个符合条件的商品对象,对象中的名称为'Apple',价格为1.2,而其他商品对象均未符合条件。

结论

通过以上两个示例,我们可以看出,Underscore.js的_.where()函数可以很方便地提取出数组中符合指定条件的对象。其中properties参数可以提供多个键和值,以匹配更多的条件,而且一些属性也可以提供函数,以实现更精细的筛选。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Underscore.js _.where()函数 - Python技术站

(0)
上一篇 2023年5月12日
下一篇 2023年5月12日

相关文章

  • jQWidgets jqxScrollBar步骤属性

    以下是关于 jQWidgets jqxScrollBar 组件中步骤属性的详细攻略。 jQWidgets jqxScrollBar 步骤属性 jQWidgets jqxScrollBar 组件的步骤属性用于设置滚动条的步。 语法 // 设置步长 $(‘#scrollBar’).jqxScrollBar({ step: 10 }); 参数 step:Numbe…

    jquery 2023年5月12日
    00
  • jQuery Easyui 验证两次密码输入是否相等

    在jQuery Easyui中,要实现验证两次密码输入是否相等可以借助validator扩展来实现。下面是详细的攻略: 第一步:引入必要资源 在HTML页面中引入jQuery、jQuery Easyui、和validator扩展的js和css代码块 <link rel="stylesheet" type="text/css…

    jquery 2023年5月27日
    00
  • jQuery UI Autocomplete disabled选项

    以下是关于 jQuery UI Autocomplete disabled 选项的完整攻略: jQuery UI Autocomplete disabled 选项 在 jQuery UI Autocomplete 中,可以使用 disabled 选项来控制是否禁用自动完成功能。 语法 $(selector).autocomplete({ disabled: …

    jquery 2023年5月11日
    00
  • jQWidgets jqxTreeMap headerHeight属性

    以下是关于 jQWidgets jqxTreeMap 组件中 headerHeight 属性的详细攻略。 jQWidgets jqxTreeMap headerHeight 属性 jQWidgets jqxTreeMap 的 headerHeight 属性用于设置组件中每个数据项的标题高度。您可以使用此属性来控制数据项标题的高度,以便更好地展示数据。 语法 …

    jquery 2023年5月12日
    00
  • JS+HTML5实现上传图片预览效果完整实例【测试可用】

    让我来为你详细讲解“JS+HTML5实现上传图片预览效果完整实例”。 简介 在网页上传图片时,预览上传的图片是一个很常见的功能。本攻略将介绍如何使用JS和HTML5完成上传图片预览效果的实现,帮助你更好地实现这一功能。 实现步骤 1. HTML DOM 首先,我们需要在HTML代码中添加一个文件上传控件和一个图片标签,分别用于选择上传文件和显示上传文件的预览…

    jquery 2023年5月27日
    00
  • jQWidgets jqxMenu宽度属性

    以下是关于 jQWidgets jqxMenu 组件中宽度属性的详细攻略。 jQWidgets jqxMenu 宽度属性 jQWidgets jqxMenu 组件的宽度属性用于设置菜单的宽度。该属性可以是一个数字或一个字符串。如果该属性是一个数字,则表示菜单的宽度以像素为单位。如果该属性是字符串,则表示菜单的宽度以百分比为单位。 语法 $(‘#menu’).…

    jquery 2023年5月12日
    00
  • JS实现table表格内针对某列内容进行即时搜索筛选功能

    实现table表格内针对某列内容进行即时搜索筛选功能的攻略包括以下几个步骤: HTML结构设计 在设计HTML表格结构时,需要为搜索功能留出位置。可以在表格上方添加一个输入框,用户在输入框中输入筛选条件,表格会根据输入内容筛选匹配的数据。 例如: <div> <label for="filter">搜索:</…

    jquery 2023年5月27日
    00
  • 什么是jQuery中的非侵入式验证

    jQuery中的非侵入式验证(Non-Intrusive Validation)是一种用于验证用户输入的技术,它可以通过JavaScript在页面上实时检测用户输入的有效性,并且在需要的时候提示错误信息。 通过使用非侵入式验证技术,我们可以在不干扰正常用户输入流程的情况下,有效地避免一些常见的输入错误,比如无效的邮件地址、密码过短等等。以下是非侵入式验证的实…

    jquery 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部