Javascript 如何筛选数组并返回正确的属性?

Javascript 如何筛选数组并返回正确的属性?,javascript,reactjs,typescript,filter,Javascript,Reactjs,Typescript,Filter,我的React组件中有一个render方法。我想根据道具的值显示一个特定的URL。因此,我创建了一个与我的prop-value选项对应的对象数组,以及每个选项的URL const SecurityModeOptions: any[] = [ { securityMode: 'mode1', url: 'https://docs.mode1' }, { securityMode: 'mode2', url: 'https://docs.mode2' }, { securityMode:

我的React组件中有一个render方法。我想根据道具的值显示一个特定的URL。因此,我创建了一个与我的prop-value选项对应的对象数组,以及每个选项的URL

const SecurityModeOptions: any[] = [
  { securityMode: 'mode1', url: 'https://docs.mode1' },
  { securityMode: 'mode2', url: 'https://docs.mode2' },
  { securityMode: 'mode3', url: 'https://docs.mode3' }
];

  renderBasicMode = () => {
    const { securityMode } = this.props;
    const getSecurityModeURL = SecurityModeOptions.filter(
       url => SecurityModeOptions.SecurityMode === securityMode
    );
    return (
      <div>
        <NoResource
          icon="user-o"
          title="Security Mode"
          moreUrl={getSecurityModeURL()}
        />
      </div>
    );
  };
const SecurityModeOptions:any[]=[
{securityMode:'mode1',url:'https://docs.mode1' },
{securityMode:'mode2',url:'https://docs.mode2' },
{securityMode:'mode3',url:'https://docs.mode3' }
];
renderBasicMode=()=>{
const{securityMode}=this.props;
const getSecurityModeURL=SecurityModeOptions.filter(
url=>SecurityModeOptions.SecurityMode===SecurityMode
);
返回(
);
};
所以,我做了这个过滤函数,我在
moreUrl
prop中调用它。问题是在接下来的几天里,我没有办法测试这个功能是否有效。所以,我在想,如果你能看一看,告诉我它是否有问题

我感觉到我做了一些古怪的事情,但我没有犯任何错误,我也不确定我做得是否正确。这将是一个巨大的帮助

预期行为:


如果
securityMode选项中的securityMode
this.props.securityMode
匹配,则会在moreUrl属性中看到相应的URL。

这有几个问题
GetSecurityModelUrl
将解析为数组,而不是函数。因此,如果在子级中调用,行
moreUrl={getSecurityModelUrl()}
将导致错误

如果希望
getSecurityModeURL
解析为单个对象,则需要使用
。查找
,而不是
。筛选
。所以最终会看起来像:

const getSecurityModeURL = SecurityModeOptions.find(
   x => x.SecurityMode === securityMode
);
然后把它传给孩子

moreUrl={getSecurityModeURL.url | |'''}


就测试而言,看起来您有样本数据,为什么不能使用它进行测试?其他一切看起来都很好。

GetSecurityModelURL
真的是一个函数吗?输入不同的
securityMode
并检查是否可以在
NoResource
组件中呈现当前url打开开发工具控制台启动…应该会看到错误。这是你的第一条线索如果我能做到,我会的。在接下来的几天里,我无法检查这个功能,而且我还是一个初级开发人员,所以不太确定,这是否有效。因此问题就来了。你可以轻松地打开任何沙箱站点,在react之外测试你的过滤器,看看它会返回什么。所显示的内容将抛出错误您仍然可以模拟它。你有一系列的模式,你知道你会得到
securityMode
,因为道具试图呈现一些简单的东西,只是为了检查你没有得到错误和正确的url,你需要
filter()
没有正确使用。我无法测试它,因为道具不在那里,我无法模拟它。当前仅存在默认值。剩下的功能将在未来几天内推出,但我不想等到出现问题的时候再推出。嗯,所以我犯了不少错误。应该知道筛选器将返回一个数组。。需要记住…给道具一个值,然后测试它?我看不出有什么问题。