首页 > 解决方案 > 控制台记录数组中的对象出现的次数,无论其中的字符大小写如何

问题描述

尝试记录芥末出现的次数,无论它是用什么情况写的。感谢任何帮助。

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 + "'."; 

标签: javascriptarrays

解决方案


可以使用 来从数组中生成单个结果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不匹配,您可以计算零


推荐阅读