在使用 Laravel 的时候,相信很多人都有接触过 Laravel Collection 的强大和便利,然而本文要为你介绍的是前端 js 界的 collect.js 。collect.js 的灵感来源就是来自 Laravel Collection。下面来看看 collect.js 的一些用法:
安装
collect.js 是一个标准的 npm package,所以你可以直接通过下面的命令安装:
npm install collect.js --save使用需要注意
因为在 js 中,有一些比较是和 PHP 比较是不一样的,在默认情况下,js 会偏向于严格意义的比较,所以有几个方法需要首先认识:
Laravel 的
containsStrict()使用contains()Laravel 的
toArray()使用all()Laravel 的
uniqueStrict()使用unique()Laravel 的
whereStrict()使用where()Laravel 的
whereInStrict()使用whereIn()Laravel 的
whereNotInStrict()使用whereNotIn()
具体的方法使用
如果你对 Laravel 的 Collection 熟悉的话,collect.js 的方法命名都是跟 Laravel 的一致的。
1.求平均数 avg()
collect([1, 3, 3, 7]).avg();
//=> 3.5如果数组里面包含了复杂的对象,可以这样使用:
const collection = collect([
{ name: 'JavaScript: The Good Parts', pages: 176 },
{ name: 'JavaScript: The Definitive Guide', pages: 1096 }
]);
collection.avg('pages');
//=> 6362.分块 chunk()
const collection = collect([1, 2, 3, 4, 5, 6, 7]);
const chunks = collection.chunk(4);
chunks.all();
//=> [[1, 2, 3, 4], [5, 6, 7]]3.包含 contains()
const collection = collect({
name: 'Steven Gerrard',
number: 8
});
collection.contains('name');
//=> true
collection.contains('age');
//=> falsecontains() 对数组也是适用的:
const collection = collect([1, 2, 3]);
collection.contains(3);
//=> true4.元素的总个数 count()
const collection = collect([1, 2, 3, 4]);
collection.count();
//=> 45.条件过滤 filter()
const collection = collect([1, 2, 3, 4]);
const filtered = collection.filter(function (value, key) {
return value > 2;
});
filtered.all();
//=> [3, 4]6.取第一个元素 first():
collect([1, 2, 3, 4]).first();
//=> 17.获取某个 key 的值 get()
const collection = collect({
firstname: 'Chuck',
lastname: 'Norris'
});
collection.get('lastname');
//=> Norris8.根据某个 key 分组 groupBy()
const collection = collect([
{
product: 'Chair',
manufacturer: 'IKEA'
},
{
product: 'Desk',
manufacturer: 'IKEA'
},
{
product: 'Chair',
manufacturer: 'Herman Miller'
}
]);
const grouped = collection.groupBy('manufacturer');
grouped.all();
//=> {
//=> IKEA: [
//=> {
//=> id: 100,
//=> product: 'Chair',
//=> manufacturer: 'IKEA',
//=> price: '1490 NOK'
//=> },
//=> {
//=> id: 150,
//=> product: 'Desk',
//=> manufacturer: 'IKEA',
//=> price: '900 NOK'
//=> }
//=> ],
//=> 'Herman Miller': [
//=> {
//=> id: 200,
//=> product: 'Chair',
//=> manufacturer: 'Herman Miller',
//=> price: '9990 NOK'
//=> }
//=> ]
//=> }....方法是在太多,就不一一演示了,可以直接到 Github 查看:https://github.com/ecrmnn/collect.js
个人觉得 collect.js 在前端也是会给很多开发者带来便利,就像我在 Laravist 上录的那个 Laravel Collection 的系列教程一样,相信用 collect.js 也能在前端部分重构很多代码,比如多数情况下的 for 循环等,判断一个元素是否存在等。
真诚推荐给你 collect.js