gpt4 book ai didi

javascript - 使用 underscorejs 的 _.invoke() 中可用的不同方法是什么

转载 作者:行者123 更新时间:2023-11-30 17:04:08 24 4
gpt4 key购买 nike

我的代码:

  var arr = [[5,4,3],[3,7,88],[99,66,48]];
//Sort
var testInvoke = _.invoke(arr, 'sort');
  • _.invoke函数中函数名是sort
  • 这样所有的数据都按顺序排列在testInvoker

    [[3,4,5],[3,7,88],[48,66,99]]
  • 我的问题是 _.invoke 我可以通过它执行其他操作,例如 sort
  • 除了sort,我只找到了slice
  • 如果有人知道操作列表或包含任何其他引用资料,请帮助我。

最佳答案

要回答您的问题,让我们先看看是什么_.invoke在内部做:

function (obj, method) {
var args = slice.call(arguments, 2);
var isFunc = _.isFunction(method);
return _.map(obj, function(value) {
return (isFunc ? method : value[method]).apply(value, args);
});
}

从这里可以明显看出 method 应该是列表项可能具有的任何方法。例如,如果 obj 是一个数组,那么 method 可以是该数组项具有的任何方法。取一个字符串数组:

["one", "two", "three"]

每个字符串都有一堆来自字符串原型(prototype)的方法。这意味着可以在 _.invoke 中使用 say String.prototype.toUpperCase 方法:

_.invoke(["one", "two", "three"], "toUpperCase");

它会产生新的数组:

["ONE", "TWO", "THREE"]

所以你的问题的答案是:method 可以是被迭代对象的项目支持的任何方法。这可以是原型(prototype)方法,也可以是对象自己的属性:

function User(name) {
this.name = name;
this.getName = function() {return this.name};
}

var user1 = new User('Thomas');
var user2 = new User('Mann');

_.invoke([user1, user2], 'getName'); // => ["Thomas", "Mann"]

如果你的问题数组 [[5,4,3],[3,7,88],[99,66,48]] 除了 sort你可以使用任何其他 Array.prototype方法,例如 join、concat、reduce 等。

关于javascript - 使用 underscorejs 的 _.invoke() 中可用的不同方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28319891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com