Underscore.js _.reject函数
Underscore.js是一个JavaScript库,它提供了很多有用的功能,对编程有很大的帮助,如地图、过滤器、调用等,甚至不使用任何内置对象。
_.reject()函数用来给出与给定条件不匹配的答案。它用于从列表中找出那些不满足给定条件的元素,然后只对它们进行修改。当列表中的所有元素都被传递给函数/迭代器,并且没有更多的元素留下时,_.reject()循环结束。它与_.filter()函数相反,因为filter选择的是那些满足给定条件的项目。
语法:
_.reject( list, predicate, [context] )
参数:该函数接受上面提到的和下面描述的三个参数。
- list。该参数包含元素列表。
- predicate。这个参数包含用于拒绝元素的条件。
- context。它是用于显示的文本。它是可选参数。
返回值:该函数返回不符合_.reject()函数条件的元素数组。
将一个数字列表传递给_.reject()函数: _.reject()函数从列表中一个一个地获取元素,并对代码进行操作。下面是一个从列表中找出奇数元素的例子。
示例:
<html>
<head>
<script type="text/javascript" src =
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js" >
</script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore.js">
</script>
</head>
<body>
<script type="text/javascript">
var odds = _.reject([1, 2, 3, 4, 5, 6],
function(num){ return num % 2 == 0; });
console.log(odds);
</script>
</body>
</html>
输出:
向_.reject()函数传递一个结构:选择项目的一个属性,条件将在此基础上应用。下面使用了’disabled’属性。由于’item2’没有disabled属性,所以它被拒绝并作为输出。
示例:
<html>
<head>
<script type="text/javascript" src =
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js">
</script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore.js">
</script>
</head>
<body>
<script type="text/javascript">
var data = {
stuff: {
item1: {
name: "one",
disabled: true
},
item2: {
name: "two"
}
}
};
data.stuff = _.reject(data.stuff, function(val) {
return val.disabled;
});
console.log(data.stuff);
</script>
</body>
</html>
输出:
传递一个数字列表和一个与项目匹配的值:数组中与给定数字不匹配的元素被拒绝,因此在输出中显示为数组。
示例:
<html>
<head>
<script type="text/javascript" src =
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js" >
</script>
<script type="text/javascript" src =
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore.js"></script>
</head>
<body>
<script type="text/javascript">
console.log( _.reject({one: 1, two: 2, three: 3}, function(val, key){
return val === 2;
}));
</script>
</body>
</html>
输出:
同时使用两个_.reject()函数:向每个_.reject()函数传递不同的对象,然后通过使用逻辑运算符,如&&、||、!
等,将以下结果一起使用。这里,2个对象和2个数组都被拒绝了,因为它们不符合给定的条件,所以它们被作为输出。
示例:
<html>
<head>
<script type="text/javascript" src =
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js" >
</script>
<script type="text/javascript" src =
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore.js">
</script>
</head>
<body>
<script type="text/javascript">
var arraylist1 = [true];
var arraylist2 = [null, {} , undefined, {}];
var object1 = {prop1: true};
var object2 = {
prop1: null,
prop2: true,prop3: true,
};
if (_.reject(arraylist1) && _.reject(object1)) {
console.log('arraylist1 and object1 are valid');
}
if (_.reject(arraylist2) && _.reject(object2)) {
console.log('arraylist2 and object2 do not have all items valid');
}
</script>
</body>
</html>
输出: