Underscore.js _.groupBy函数
Underscore.js是一个JavaScript库,它提供了很多有用的函数,对编程有很大的帮助,如map、filter、invoke等,甚至不需要使用任何内置对象。_.groupBy()函数是用来收集所传递的数组中的元素的。它的工作原理是将每个元素的值与其他元素相匹配。如果它们匹配,那么它们就被放在一个集合中,否则我们将有两个集合/组。我们也可以通过一个函数,根据它的结果来收集这些元素。它可以在数字的基础上分组,也可以按字符串分组。语法。
_.groupBy( list, iterate, context )
参数:该函数接受上面提到的和下面描述的三个参数。
- list。该参数包含元素列表。
- iterate。这个参数包含用于文本元素的条件。
- context。它是用于显示的文本。它是可选参数。
返回值:它以不同的数组形式返回集合。
在_.groupBy()函数中使用Math.ceil(): _.groupBy()函数从列表中逐个获取元素并将其传递给Math.ceil()函数。然后函数的每个元素的输出将与Math.ceil()中另一个元素的输出相匹配,然后将它们放在一个组中,否则它们将被放在两个独立的组中。在所有元素与所有其他元素匹配后,
_.groupBy函数结束。
例子:
<html>
<head>
<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(_.groupBy([2.7, 3.4, 6.6, 1.2, 2.0, 2.4], function(num) {
return Math.ceil(num);
}));
</script>
</body>
</html>
输出:
在_.groupBy()函数中使用length():将数组元素传递给groupBy()函数并根据它们的长度来匹配元素。如果两个元素的长度相同,那么它们将被归入一个组,否则将形成两个组。
例子:
<html>
<head>
<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(_.groupBy(['HTML', 'CSS3', 'JS', 'PHP'], 'length'));
</script>
</body>
</html>
输出:
使用_.groupBy()函数中传递的数组的一个属性:首先,声明数组(这里数组是’arr’)。选择一个需要检查的条件,如这里的’prop3’。然后,在’prop3’中具有相同值的元素将被归入一个组。Console.log最后的答案。
例子:
<html>
<head>
<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 arr = [
{prop1:"10", prop2:"07", prop3: "Geeks"},
{prop1:"12", prop2:"86", prop3: "for"},
{prop1:"11", prop2:"58", prop3: "Geeks"}
];
console.log(_.groupBy(arr, 'prop3'));
</script>
</body>
</html>
输出:
将’date’作为数组的属性一起传递给_.groupBy()函数:首先定义一个数组,其中一个属性是格式为’dd-mm-yy’的’date’。然后将数组和’date’属性传递给_.groupBy()函数。具有相同日期的元素将被归入一个组。组的编号将从0开始。
例子:
<html>
<head>
<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 orders = [
{ date:"30-60-90 Day", Name:"Kim", amount:415 },
{ date:"30-60-90 Day", Name:"Kelly", amount:175 },
{ date:"30 Day", Name:"Shelly", amount:400 },
{ date:"30 Day", Name:"Sarvesh", amount:180 }
];
console.log(_.groupBy(orders, "date"));
</script>
</body>
</html>
输出: