Javascript 在筛选器if语句中拨号时遇到问题-多个下拉列表
我想要的功能: 下拉列表1=位置 下拉列表2=技能 当用户从下拉列表中选择位置和从其他下拉列表中选择技能时,将显示结果(目前有效) 但我遇到的问题是“所有地点”和“所有技能” [注意]我无法更改来自API的数据 目前页面加载时没有人(如果默认为所有位置所有技能显示,那就更好了),下拉列表设置为“所有位置”和“所有技能,但我不知道如何使这些状态有任何意义 或者如何说“所有地点”意味着你在看所有的人,或者说技能是一样的 任何帮助都会很好。这就是我目前所处的位置 我猜这可以通过一个if-else语句或者两个if-else语句来实现。我不知道,我开始感到困惑了Javascript 在筛选器if语句中拨号时遇到问题-多个下拉列表,javascript,reactjs,if-statement,filter,Javascript,Reactjs,If Statement,Filter,我想要的功能: 下拉列表1=位置 下拉列表2=技能 当用户从下拉列表中选择位置和从其他下拉列表中选择技能时,将显示结果(目前有效) 但我遇到的问题是“所有地点”和“所有技能” [注意]我无法更改来自API的数据 目前页面加载时没有人(如果默认为所有位置所有技能显示,那就更好了),下拉列表设置为“所有位置”和“所有技能,但我不知道如何使这些状态有任何意义 或者如何说“所有地点”意味着你在看所有的人,或者说技能是一样的 任何帮助都会很好。这就是我目前所处的位置 我猜这可以通过一个if-else语句或
constructor(props) {
super(props);
this.state = {
developers: [],
filterCountry: "All locations",
filterSkills: "All skills"
};
}
componentDidMount() {
fetch('API')
.then(features => features.json())
.then(developers => {
this.setState({ developers })
})
}
filterCountry(e){
this.setState({filterCountry: e })
}
filterSkills(e){
this.setState({filterSkills: e })
}
render() {
let developers = this.state.developers.features
if (!developers ){
return null
}
if (this.state.filterCountry && this.state.filterSkills) {
developers = developers.filter( developer =>
developer.properties.continent
.includes(this.state.filterCountry )
)
developers = developers.filter( developer =>
developer.properties.skills
.includes(this.state.filterSkills )
)
}
任何帮助都将不胜感激
console.log(developers)
(20) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0
:
geometry
:
{coordinates: Array(2), type: "Point"}
id
:
"22bcd3917f78652cc62ee6908f057ceb"
properties
:
company_name
:
"redacted"
continent
:
"North America"
description
:
""
email
:
"redacted"
github
:
"redacted"
linkedin
:
""
location
:
"Sunnyvale, CA USA"
name
:
"redacted"
skills
:
""
skills_full
:
""
twitter
:
""
website
:
""
__proto__
:
Object
type
:
"Feature"
__proto__
:
Object
如果您只想在状态为
filterCountry=“所有位置”和filterSkills=“所有技能”
您可以在过滤器中执行以下操作:
developers = developers.filter( developer => {
return this.state.filterCountry === 'All locations' || developer.properties.continent.includes(this.state.filterCountry)
});
开发者
的形状是什么样子的?你想在什么时候看到它变化?这个。状态。开发者
在抓取完成后让我知道控制台的图像是否会更好,它是一个包含所有开发者的数组。这是一个有点让人困惑的部分。就像选择了北美一样d然后是所有技能。它仍然需要为北美的所有开发人员进行筛选…这有意义吗?对,您需要在其他筛选功能中执行相同的操作。似乎对位置很有效,…但对技能没有那么多。就像我将选择北美&所有技能,这应该会向我展示北美的所有开发人员t什么都没有出现。.我需要再玩一点。是否将此.state.filterSkills==='All Skills'| |…
返回到您的技能筛选函数?啊,它现在可以工作了。.“All Skills”需要是“All Skills”…谢谢