1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| define(['./restArguments', './isFunction', './map', './_deepGet', './_toPath'], function (restArguments, isFunction, map, _deepGet, _toPath) {
|
| // Invoke a method (with arguments) on every item in a collection.
| var invoke = restArguments(function(obj, path, args) {
| var contextPath, func;
| if (isFunction(path)) {
| func = path;
| } else {
| path = _toPath(path);
| contextPath = path.slice(0, -1);
| path = path[path.length - 1];
| }
| return map(obj, function(context) {
| var method = func;
| if (!method) {
| if (contextPath && contextPath.length) {
| context = _deepGet(context, contextPath);
| }
| if (context == null) return void 0;
| method = context[path];
| }
| return method == null ? method : method.apply(context, args);
| });
| });
|
| return invoke;
|
| });
|
|