gpt4 book ai didi

javascript - 如何创建一个字典,使用单词的频率作为键?

转载 作者:行者123 更新时间:2023-11-28 18:33:09 25 4
gpt4 key购买 nike

我正在编写一个脚本,我想用一些数组的单词创建一个字典,该数组称为removeArray,如下所示:

["RBD", "X", "RBD3", "C", "92173", "GJHGWO.NAYE", "SAMBORNSiPOSSSTHRa1", "GJHGX4.NAYE", "SAMBORNSiPOSSSTHRa", "X3", "GJHGX6.NAYE", "GJHGX8.NAYE", "SAMBORNSiPOSSSTHRa2", "GJHGXA.NAYE", "GJHGXC.NAYE"]

我从文本区域中提取了这些单词,如下所示:

"RBD|X|RBD3|C|92173~GJHGWO.NAYE" "SAMBORNSiPOSSSTHRa1"
"RBD|X|RBD|C|92173~GJHGX4.NAYE" "SAMBORNSiPOSSSTHRa"
"RBD|X3|RBD3|C|92173~GJHGX6.NAYE" "SAMBORNSiPOSSSTHRa1"
"RBD|X|RBD|C|92173~GJHGX8.NAYE" "SAMBORNSiPOSSSTHRa2"
"RBD|X|RBD|C|92173~GJHGXA.NAYE" "SAMBORNSiPOSSSTHRa2"
"RBD|X3|RBD|C|92173~GJHGXC.NAYE" "SAMBORNSiPOSSSTHRa"

我想创建一个字典,其组成如下,首先键是名为removeArray的数组中包含的单词,字典的值是该单词在文本区域中的频率,第一个键是“RBD”,然后它的频率是 10,因为该单词在文本区域中出现 10 次。

myDictionary = { "RBD" : 10, X: 4, 92173: 6, ...}; 

第一个键是“RBD”,它的频率是 10,因为该单词在文本区域中出现了 10 次。为了实现这一点,我尝试首先提取不重复的单词,如下所示:

var splitWords = document.getElementById("texto").value.split(/[["\|~]/);
splitWords = document.getElementById("texto").value.split(/[["\|~]/)
uniqueWords = _.uniq(splitWords);
console.log(uniqueWords);
var removeArray = _.remove(uniqueWords, function (word) {return word !== '' && word !== ' ' && word !== '\n'});

但是我不知道如何将此数组转换为具有上述规范的字典,我想感谢对此的支持,我的完整代码如下:

<!DOCTYPE html>
<html>
<script src="lodash.js"></script>
<body>
<p id="demo"></p>
<textarea cols=150 rows=15 id="texto">
"RBD|X|RBD3|C|92173~GJHGWO.NAYE" "SAMBORNSiPOSSSTHRa1"
"RBD|X|RBD|C|92173~GJHGX4.NAYE" "SAMBORNSiPOSSSTHRa"
"RBD|X3|RBD3|C|92173~GJHGX6.NAYE" "SAMBORNSiPOSSSTHRa1"
"RBD|X|RBD|C|92173~GJHGX8.NAYE" "SAMBORNSiPOSSSTHRa2"
"RBD|X|RBD|C|92173~GJHGXA.NAYE" "SAMBORNSiPOSSSTHRa2"
"RBD|X3|RBD|C|92173~GJHGXC.NAYE" "SAMBORNSiPOSSSTHRa"
</textarea>
<script>
var splitWords = document.getElementById("texto").value.split(/[["\|~]/);
splitWords = document.getElementById("texto").value.split(/[["\|~]/)
uniqueWords = _.uniq(splitWords);
console.log(uniqueWords);
var removeArray = _.remove(uniqueWords, function (word) {return word !== '' && word !== ' ' && word !== '\n'});
console.log(removeArray);
</script>
</body>
</html>

最佳答案

只需使用Array.prototype.reduce就可以非常简单地完成此操作。像这样的事情:

var splitWords = document.getElementById("texto").value.split(/[["\|~]/);

var dict = splitWords.reduce(function(p,c) {
if (p[c] === undefined) {
p[c] = 1;
} else {
p[c]++;
}
return p;
},{});

console.log(dict);
<textarea cols=150 rows=15 id="texto">
"RBD|X|RBD3|C|92173~GJHGWO.NAYE" "SAMBORNSiPOSSSTHRa1"
"RBD|X|RBD|C|92173~GJHGX4.NAYE" "SAMBORNSiPOSSSTHRa"
"RBD|X3|RBD3|C|92173~GJHGX6.NAYE" "SAMBORNSiPOSSSTHRa1"
"RBD|X|RBD|C|92173~GJHGX8.NAYE" "SAMBORNSiPOSSSTHRa2"
"RBD|X|RBD|C|92173~GJHGXA.NAYE" "SAMBORNSiPOSSSTHRa2"
"RBD|X3|RBD|C|92173~GJHGXC.NAYE" "SAMBORNSiPOSSSTHRa"
</textarea>

您循环遍历所有单词并检查它们是否已存在于字典中。如果没有,则将其添加到字典中,计数为 1,否则只需增加计数。

关于javascript - 如何创建一个字典,使用单词的频率作为键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37601303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com