gpt4 book ai didi

javascript - 使用 _.filter 重新创建 Underscore.js _.reject

转载 作者:行者123 更新时间:2023-11-29 18:15:39 24 4
gpt4 key购买 nike

我正在从事一个项目,我正在重新创建 Underscore.js 中包含的许多基本功能。我已经成功地编写了 _.filter() 函数,使用我对 _.each() 的实现(两者都在下面)。

此外,我已经能够使用“简单”的方式编写 _.reject() 函数(只需复制/粘贴 _.filter() 代码并在适当的位置添加 !),但是对于学习经验,我希望开发一个替代实现,它使用实际调用 _.filter()。

我已经看到问题和回复显示如何使用另一个 Underscore 函数 _.negate() 执行此操作,但我还没有在项目中实现这个函数,所以我的问题是,有没有办法在不使用 _.negate() 的情况下使用对 _.filter() 函数的调用来创建 _.reject()?

_.过滤器:

_.filter = function(collection, test) {
var results = [];

_.each(collection, function(itemTested) {
if (test(itemTested)) {
results.push(itemTested);
}
});

return results;
};

_.每个:

_.each = function(collection, iterator) {
if(Array.isArray(collection)) {
for(var i = 0; i < collection.length; i++) {
iterator(collection[i], i, collection);
}
}

else {
for(var property in collection) {
iterator(collection[property], property, collection);
}
}
};

_.reject 的当前版本:

_.reject = function(collection, test) {
var results = [];

_.each(collection, function(itemTested) {
if (!test(itemTested)) {
results.push(itemTested);
}
});

return results;
};

最佳答案

使用过滤器拒绝函数:

var _ = {};

_.reject = function(col, fn) {
return col.filter(function(v) {
return !fn(v);
});
}

// or using your _.filter function
_.reject = function(col, fn) {
return _.filter(col, function(v) {
return !fn(v);
});
}

var odd = _.reject([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; });

console.log(odd); // [1,3,5]

JS Bin 示例

http://jsbin.com/juyos/1/edit

关于javascript - 使用 _.filter 重新创建 Underscore.js _.reject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23544124/

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