This commit is contained in:
毛财君
2023-07-06 17:37:33 +08:00
parent 06f26608af
commit 197b38ca6f
816 changed files with 236883 additions and 989 deletions

View File

@@ -0,0 +1,50 @@
var map = require('./map')
var isArray = require('./isArray')
function deepGetObj (obj, path) {
var index = 0
var len = path.length
while (obj && index < len) {
obj = obj[path[index++]]
}
return len && obj ? obj : 0
}
/**
* 在list的每个元素上执行方法,任何传递的额外参数都会在调用方法的时候传递给它
*
* @param {Array} list
* @param {Array/String/Function} path
* @param {...Object} arguments
* @return {Array}
*/
function invoke (list, path) {
var func
var args = arguments
var params = []
var paths = []
var index = 2
var len = args.length
for (; index < len; index++) {
params.push(args[index])
}
if (isArray(path)) {
len = path.length - 1
for (index = 0; index < len; index++) {
paths.push(path[index])
}
path = path[len]
}
return map(list, function (context) {
if (paths.length) {
context = deepGetObj(context, paths)
}
func = context[path] || path
if (func && func.apply) {
return func.apply(context, params)
}
})
}
module.exports = invoke