javascript - 控制台记录数组中的对象出现的次数,无论其中的字符大小写如何
问题描述
尝试记录芥末出现的次数,无论它是用什么情况写的。感谢任何帮助。
const shopInventory = ['milk', 'Cheddar', 'mustard', 'ketchup', 'olive oil', 'cheddar', 'milk', 'garlic', 'mayo', 'carrots', 'cheddar', 'Mustard', 'mayo', 'orange juice']
let count = 0
for (let i = 0; i < shopInventory.length; i++) {
if ( shopInventory[i] === 'mustard') {
count += 1
}
}
console.log(count)
从网上看它与以下代码有关吗?
function gfg_Run() {
res = arr.findIndex(item =>
el.toLowerCase() === item.toLowerCase());
el_down.innerHTML = "The index of '" +
el + "' is '" + res + "'.";
解决方案
可以使用 来从数组中生成单个结果Array.prototype.reduce()
。您还可以使用不区分大小写的方式比较字符串String.prototype.localeCompare()
const shopInventory = ['milk', 'Cheddar', 'mustard', 'ketchup', 'olive oil', 'cheddar', 'milk', 'garlic', 'mayo', 'carrots', 'cheddar', 'Mustard', 'mayo', 'orange juice']
const t1 = performance.now()
const locale = "en"
const options = { sensitivity: "base" }
const search = "mustard"
const count = shopInventory.reduce((c, inv) =>
c + (Math.abs(inv.localeCompare(search, locale, options)) ^ 1), 0)
const t2 = performance.now()
console.info(`Found "${search}" ${count} time(s)`)
console.log(`Operation took ${t2 - t1}ms`)
因为localeCompare()
返回0
匹配或-1
/1
不匹配,您可以计算零
推荐阅读
- c# - 将 SQL 表中的值与文本框中的条目进行比较
- scala - 如何将 DataFrame 中的行分组为由分隔符 Scala Spark 分隔的单行?
- javascript - 使用javascript聚焦时更改contenteditable div元素的边框
- python - 如何编写查询以从 url 获取 xml 文件并在现有数据库中创建 sql 表
- php - 在 Woocommerce 块中编辑标签
- node.js - POST http://localhost:3000/auth 500(内部服务器错误)和数据未定义
- plantuml - 查看 C4Builder 项目时从 PlantUml 解析错误
- ios - 如何为我的 iOS 应用程序制作四位数的版本号
- c++ - 为什么 range::unique_copy 不能与 std::ostream_iterator 一起使用?
- java - 在图中查找最大覆盖的节点对