首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ramda或ES6 -过滤对象数组后,返回对象属性的值

Ramda或ES6 -过滤对象数组后,返回对象属性的值
EN

Stack Overflow用户
提问于 2020-01-22 01:24:19
回答 2查看 68关注 0票数 0

我想要返回一个对象的一个属性,如果另一个属性的值与一个常量匹配。

示例:

代码语言:javascript
复制
// The Array
[
 {name: "Name1", description: "Name1 Description", enabled: true},
 {name: "Name2", description: "Name2 Description", enabled: false},
 {name: "Name3", description: "Name3 Description", enabled: false}
]

// The Constant
enum constant {
  Name1 = 'Name1',
  Name2 = 'Name2',
  Name3 = 'Name3'
}

// What I want to return
// Value of enabled property, for the matching object

这是我写的代码:

代码语言:javascript
复制
const filterBasedOnToggle = (featureTogglesArray: IFeatureToggle[], featureToggle: Toggle): boolean[] => {
  return featureTogglesArray.filter((feature: IFeatureToggle) => feature.name === featureToggle).map(featureProperty => featureProperty.enabled);
};

正如您通过Typings所看到的,这将返回一个布尔值的数组。我想返回普通的值。有什么想法吗?谢谢你!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-22 01:31:17

我没有检查您的代码是否工作,但是正如您所说的,它返回一个布尔数组,所以尝试使用array.find获取第一个匹配项。

代码语言:javascript
复制
  const MATCH = featureTogglesArray.find((feature: IFeatureToggle) => feature.name === featureToggle);
  return MATCH === undefined ? false : MATCH.enabled;
票数 1
EN

Stack Overflow用户

发布于 2020-01-22 02:00:54

你在找这样的东西吗?

代码语言:javascript
复制
const filterBasedOnToggle = (toggles) => (searchName) => {
  const feature = toggles .find (({name}) => name == searchName) || {}
  return feature .enabled
}

const featureToggles = [{name: "Name1", description: "Name1 Description", enabled: true}, {name: "Name2", description: "Name2 Description", enabled: false}, {name: "Name3", description: "Name3 Description", enabled: false}];

const enabledByName = filterBasedOnToggle (featureToggles);

console .log (['Name1', 'Name2', 'Name3', 'Name4'] .map (enabledByName))
//~> [true, false, false, undefined]

这个版本使用find而不是filter来匹配第一个...这可能是你的版本的签名问题。如果值不匹配,它将返回undefined,但是如果您愿意,可以很容易地将其设置为false。当然,您也可以使用Ramda函数来编写此函数,但我并没有看到太多可以使此变得更简单的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59846268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档