【发布时间】: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