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
数组和一个对象,其中包含了两个属性:name
和price
。其中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技术站