Underscore.js是一个JavaScript工具库,提供了许多有用的函数和工具,可以方便地处理集合、函数、对象等各种数据类型。其中的_.reject函数可以对集合进行过滤操作,返回不符合条件的元素。
1. 函数语法
_.reject(collection, predicate, [context])
- collection: 待操作的集合,可以是数组、对象或类数组对象。
- predicate: 过滤条件,可以是函数或者对象。当该参数为对象时,Underscore.js会将其转换为等价的函数。
- context: 执行上下文,用于改变predicate函数内部的this指向。
2. 函数功能
.reject函数的作用是将集合中符合条件的元素过滤掉,返回剩下的元素。这个和.filter函数的功能是相反的。
3. 示例说明
例一:过滤数组中大于等于3的元素
var arr = [1, 2, 3, 4, 5];
var result = _.reject(arr, function(num){ return num >= 3; });
console.log(result); // [1, 2]
上述代码中,arr是待过滤的数组,函数参数num代表数组元素。函数中,对num进行判断,如果num大于等于3,则返回false,否则返回true,将该元素保留在结果集合中返回。所以最后输出的结果为 [1, 2]。
例二:过滤对象数组中符合条件的元素
var arr = [
{name: 'Tom', age: 12},
{name: 'Lucy', age: 15},
{name: 'John', age: 17},
{name: 'Bob', age: 8}
];
var result = _.reject(arr, function(person){ return person.age >= 15; });
console.log(result);
// [{name: 'Tom', age: 12}, {name: 'Bob', age: 8}]
上述代码中,arr是待过滤的对象数组,函数参数person代表数组的每个元素。函数中,对每个元素的age进行判断,如果age大于等于15,则返回false,否则返回true。最后输出的结果仅包含 age 小于 15 的元素。
通过以上示例可以了解到,_.reject函数可用于处理各种不同的集合类型,只需结合不同的predicate函数即可实现各种复杂的过滤需求。