>[danger]题目: 提供了一个数组结构的 data,要求实现一个`query`方法,返回一个新的数组,query 方法内部有`过滤`、`排序`、`分组`等操作,并且支持链式调用,调用最终的`execute`方法返回结果: ``` const result = query(list) .where(item => item.age > 18) .sortBy('id') .groupBy('name') .execute(); console.log(result); ``` 具体实现这里就不贴了,过滤用原生的数组 `filter` 方法,排序用原生的数组 `sort` 方法,分组需要手写一下,类似 `lodash/groupBy` 方法。 过滤和排序实现都比较顺利,在实现分组方法的时候不是很顺利,有点忘记思路了,不过最后还是写出来了,关于链式调用,核心是只需要在每一步的操作最后返回 `this` 即可。