gpt4 book ai didi

javascript - 基于嵌套属性值删除列表中项目的功能方法

转载 作者:数据小太阳 更新时间:2023-10-29 06:01:46 27 4
gpt4 key购买 nike

我正在尝试在我的 JavaScript 应用程序中更多地转向函数式编程。我目前使用库 ramda 作为基础库。

我的愿望:

  1. 创建一个函数 removeUserFromList(username, list) 返回列表中与用户名不匹配的项目。
  2. 实现尽可能短,尽可能依赖 Ramda 库中的现有功能。

条件:

包含嵌套用户对象的列表:

[{
providers: {
github: {
login: "username1"
}
}

},
{
providers: {
github: {
login: "username2"
}
}

}]

目前已完成:

var list = [{providers: {github: {login: "username1"}}},
{providers: {github: {login: "username2"}}}];

var getLoginName = R.useWith(R.path('providers.github.login'));
var isLoginNameEq = R.useWith(R.eq, getLoginName);

isLoginNameEq(list[0], "username1") // => true

//From this point on I am totally clueless,
//but I believe I should combine these functions
//with R.reject in some way.

Plunkr 演示:

http://plnkr.co/edit/1b5FjxV3Tcgz7kozW1jX

问题:

有没有更适合的函数来实现类似于 R.eq 但嵌套对象(可能是 R.pathEq)的东西?

最佳答案

我刚得到一个 pull requestR.pathEq 合并。直到 ramda.js 的下一个版本(当前版本是 0.6.0)它才会可用,但同时你可以像这样重新创建它:

var pathEq = R.curry(function(path, val, obj) {
return R.eq(val, R.path(path, obj));
});

然后像这样使用它:

 var rejectThis = 'userName1';
var myFilter = R.useWith(R.reject, pathEq('providers.github.login'):
var filteredList = myFilter(rejectThis, users);

关于javascript - 基于嵌套属性值删除列表中项目的功能方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26255003/

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