【发布时间】:2019-10-14 02:45:16
【问题描述】:
我有一个巨大的单词列表,我从 words.txt 文件中解析并过滤掉了数字、标点符号和所有包含大写字母的单词。然后我需要遍历该数组,获取每个单词并从 letterScores 对象返回值。作为输出,我总是得到 NaN,因为我是 JS 的新手,所以我不知道如何使它工作。
我还尝试使用 map() 方法而不是将值推送到空数组中,但得到了相同的 Not a Number 输出。我相信应该有更简单的方法来实现我不知道的相同结果。
var text = fs.readFileSync("./words.txt").toString('utf-8');
var textByLine = text.split("\n")
//--------------------------------------------------------//
const task1 = () =>{
letterScores = {
a:1, e:1, i:1, o:1, u:1, l:1, n:1, s:1, t:1, r:1,
d:2, g:2,
b:3, c:3, m:3, p:3,
f:4, h:4, v:4, w:4, y:4,
k:5,
j:8, x:8,
q:10, z:10
}
let wordScores = []
let filtered = textByLine.filter((word) => !/\W|\d|[A-Z]/.test(word))
filtered.forEach((word) =>{
const newWord = [...word]
sum = 0
for (let letters in newWord){
sum += letterScores[letters]
}
wordScores.push(sum)
})
return wordScores
}
console.log(task1())
【问题讨论】:
-
用
for ... of替换for ... in。
标签: javascript arrays object filter