【问题标题】:How to create a reusable array.reduce function如何创建可重用的 array.reduce 函数
【发布时间】:2022-01-19 19:22:00
【问题描述】:

我正在解决一个 Anagram 问题,想通过 Javascript 方法变得聪明

这是我的代码

const stringA = ["hello"]
const stringB = ["olhle"]
let cleanStrA = stringA.replace(/[^\w]/g, '').toLowerCase().split('')
let cleanStrB = stringB.replace(/[^\w]/g, '').toLowerCase().split('')

function charMap (str) {
    str.reduce((acc, cur) => {
        acc[cur] = acc[cur] + 1 || 1 
        return acc
    },{})
    return str
}

let buildCharMapA = charMap(cleanStrA)
let buildCharMapB = charMap(cleanStrB)
console.log(buildCharMapA)

result = ("hello")

当我在控制台记录这个时,它返回原始数组,但是当我删除包含 reduce 方法的函数时,它会创建预期的对象

    let reduceFn = cleanStrA.reduce((acc, cur) => {
        acc[cur] = acc[cur] + 1 || 1 
        return acc
    },{})
console.log(reduceFn)
result = {h:1, e:1, etc.}

什么给了?

【问题讨论】:

  • 您没有将str.reduce() 的结果分配给任何东西。
  • str.reduce 不会修改str,所以return str 返回原始数组。你想return str.reduce

标签: javascript arrays reduce


【解决方案1】:

正如 cmets 指出的那样,我错误地返回了 str 而不是整个 reduce 函数

function charMap (str) {
    return str.reduce((acc, cur) => {
        acc[cur] = acc[cur] + 1 || 1 
        return acc
    },{})

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2012-01-05
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    相关资源
    最近更新 更多