【发布时间】:2022-01-07 15:56:39
【问题描述】:
这可能是一个简单的重复问题,但我在下面找不到任何解决我的案例的解决方案。请帮帮我! :)
我正在寻找一种字符串方法来检查值是否与特定字符串匹配并返回该结果。
- 我正在使用
create-react-app,并且我有一个<select>下拉菜单供用户过滤特定价格范围的菜肴 - 此下拉列表有 3 个字符串值:“$”、“$$”和“$$$”
我目前正在使用.includes 方法,但没有得到我想要的结果,因为它包含了所有包含字符串中的字符的结果。 (如果用户选择“$”,也会返回包含“$$”和“$$$”的结果)
-> 我只希望他们返回与上面字符串值完全相同的结果。
那么用什么来代替.includes 呢?
// Initial states:
const [foodList, setFoodList] = useState([])
const [foodName, setFoodName] = useState('')
const [isVegetarian, setIsVegetarian] = useState('')
const [priceRange, setPriceRange] = useState('$')
const [textSearch, setTextSearch] = useState('')
const [priceDropdown, setPriceDropdown] = useState('')
const [vegDropdown, setVegDropdown] = useState('')
// Search.js:
const newSearch = props.foodList.filter((value) => {
return (
value.foodName.toLowerCase().includes(textSearch.toLowerCase()) &&
// What to use instead of .includes here?
value.priceRange.toLowerCase().includes(priceDropdown.toLocaleLowerCase())
&& value.isVegetarian.includes(vegDropdown.toLowerCase())
)
}
)
【问题讨论】:
-
React 和这个有什么关系?给出一个minimal可重现的例子,见minimal reproducible example。但基本上
"$$$"确实包括"$"。 -
为什么不完全匹配? priceRange 的值是多少?
-
@jonrsharpe 感谢您的提醒,我已经解决了问题!
-
@epascarello 我在
priceRange上尝试了===,但没有成功。但是下面的解决方案让我也尝试isVegetarian,它现在可以工作了:)
标签: javascript string methods ecmascript-6