gpt4 book ai didi

javascript - 计算一个数组中的单词在第二个数组中出现的次数

转载 作者:行者123 更新时间:2023-12-02 15:07:03 26 4
gpt4 key购买 nike

所以你有两个数组。搜索第二个数组并计算第一个数组中的每个单词在第二个数组中出现的次数。显示第二个数组中所有单词及其在第一个数组中的计数的可滚动列表。我不想只显示重复的值,因此交集函数没有帮助。仅使用 javascript。

例如:

listOne = [Pat, cat, hat, Tat, bat, rat];
listTwo = [Pat, mat, sat, rat, cat, Tat, Pat];

输出如下:

Pat: 2
mat: 0
sat: 0
rat: 1
cat: 1
Tat: 1

我尝试了多种方法,最接近的是:

function findFreq(listOne, listTwo, concatList) {
var a = [], b = [], lookup = {}, prev;

for(var j = 0; j < listTwo.length; j++) {
lookup[listTwo[j]] = listTwo[j];
}

for (var i = 0; i < concatList.length; i++ ) {
if (concatList[i] !== prev) {
a.push(lookup[concatList[i]]);
b.push(0);
} else {
b[b.length - 1]++;
}
prev = concatList[i];
}

return [a, b];
}

var result = findFreq(listOne, listTwo, concatList);
alert('[' + result[0] + ']<br />[' + result[1] + ']');
正如您所看到的,我认为连接两个数组是最简单的,因为我发现的所有计算元素出现次数的示例仅处理单个数组。事实上,我从 here 获取了代码。并尝试修改它以满足我的需要。

问题是输出给了我空的或额外的元素。

[Pat,Tat,,cat,,mat,rat,sat]
[2,1,0,1,0,0,1,0]

所以答案是错误的,格式也是错误的。我可能把这件事复杂化了。直接比较两个数组可能更容易,但我就是无法弄清楚。任何帮助将不胜感激。

注意:对于我的程序,我使用的两个数组实际上来自用户指定的文件,我只是在其上使用 split() 函数。这就是为什么我的命名约定很奇怪。

最佳答案

只需循环两个数组即可。像这样的东西应该有效:

listOne = ["Pat", "cat", "hat", "Tat", "bat", "rat"];
listTwo = ["Pat", "mat", "sat", "rat", "cat", "Tat", "Pat"];


for(var i = 0; i < listOne.length; i++) {
matches = 0;
for(var j = 0; j < listTwo.length; j++) {
if(listOne[i] == listTwo[j]) {
matches++;
}
}
console.log(listOne[i] + ' has '+ matches+ ' occurance(s)')
}

您可以在这里看到它的工作情况:https://jsfiddle.net/igor_9000/9n883kse/

希望有帮助!

关于javascript - 计算一个数组中的单词在第二个数组中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35049402/

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