gpt4 book ai didi

Javascript Underscore 如何共享相同的回调

转载 作者:行者123 更新时间:2023-12-03 08:58:32 24 4
gpt4 key购买 nike

是否可以共享相同的回调?我如何将 _id 作为第二个参数传递给回调?

例如

function getEntry(_id) {

if (_id === undefined) {
return false;
}
return _(this.scope[this.key]).find(function(entry) {
return entry._id === _id;
});
}

function getEntryIndex(_id) {
if (_id === undefined) {
return false;
}
return _(this.scope[this.key]).findIndex(function(entry) {
return entry._id === _id;
});
}

我想做的是为 findIndex 和 find 创建一个回调 - 例如谓词 - 因为它们正在执行相同的任务,但如何将 _id 传递给谓词?

  function predicate(entry, _id) {
return entry._id === _id;
}

function getEntry(_id) {

if (_id === undefined) {
return false;
}
return _(this.scope[this.key]).find(predicate);
}

function getEntryIndex(_id) {
if (_id === undefined) {
return false;
}
return _(this.scope[this.key]).findIndex(predicate);
}

最佳答案

我建议重构您的谓词函数,如下所示

function predicate(_id, entry) {
return entry._id === _id;
}

然后在将 _id 的值传递给 findfindIndex 时绑定(bind)它,如下所示

return _(this.scope[this.key]).find(_.partial(predicate, _id)).value();
....
return _(this.scope[this.key]).findIndex(_.partial(predicate, _id)).value();

请注意.value()最后打电话。这将给出返回的实际值。

<小时/>

事实上,您可以重构代码以仅使用一个 getEntry 函数,如下所示

function predicate(_id, entry) {
return entry._id === _id;
}

function getEntry(func, _id) {
if (_id === undefined) {
return false;
}
return _[func](this.scope[this.key], _.partial(predicate, _id));
}

getEntry('find', 1);
getEntry('findIndex', 1);

在这里,我们选择要使用参数 func 调用的函数,然后使用 _.partial 创建一个新函数。它将 _id 参数应用于 predicate 函数。

关于Javascript Underscore 如何共享相同的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32387410/

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