Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js-输出最匹配的列表_Javascript_Arrays_Filter - Fatal编程技术网

Javascript js-输出最匹配的列表

Javascript js-输出最匹配的列表,javascript,arrays,filter,Javascript,Arrays,Filter,我是JS新手,需要一些帮助。 在这个例子中:我有一个列表,在这个列表中有一个数组中的“关键字” 我找到了一些链接,但我现在不知道如何将其放入我的脚本中 ->所以我想,当我搜索[“苹果”,“草莓”]时,脚本输出最匹配的列表 这是我的主意,我尝试了很多东西。。但没有一件事像我想象的那样成功 var groups = [ {name: 'fruits', words:["apple","strawberry", "banana"]}, {name: 'test', words:[

我是JS新手,需要一些帮助。 在这个例子中:我有一个列表,在这个列表中有一个数组中的“关键字”

我找到了一些链接,但我现在不知道如何将其放入我的脚本中

->所以我想,当我搜索[“苹果”,“草莓”]时,脚本输出最匹配的列表

这是我的主意,我尝试了很多东西。。但没有一件事像我想象的那样成功


var groups = [
    {name: 'fruits', words:["apple","strawberry", "banana"]},
    {name: 'test', words:["asd","qwe"]}
];

var searchwords = ["apple", "strawberry"];

for(i = 0; i < groups.length; i++) {
    console.log(groups[i]);
    for(i = 0; i < searchwords.length; i++) {
        console.log(searchwords[i]);
        console.log('The most matching list is: ' + groups.name);
    }
}

变量组=[
{名称:'水果',单词:[“苹果”、“草莓”、“香蕉”]},
{名称:'测试',单词:[“asd”,“qwe”]}
];
var searchwords=[“苹果”、“草莓”];
对于(i=0;i
输出应为:

最好的组是“水果”组

我想要一个列表(输出),如下所示:

结果=[2,0]

“2”代表“水果”列表,因为其中有两个单词。 “0”表示列表“test”,因为没有匹配的单词


谢谢大家!

我不会给你完整的答案,但这是你应该做的

for(i = 0; i < groups.length; i++){

}
for(i=0;i
第一部分是正确的!您将迭代每个组。现在您接下来需要做的是迭代当前组中的每个水果

for(i = 0; i < groups.length; i++){
    for(j = 0; j < groups[i].words.length; ++j){

    }
}
for(i=0;i
这将允许您访问当前组中的每个水果。现在,你需要找到一种方法来计算一个水果被重复了多少次;也许你应该为此编一本新字典


试着自己做,如果你发现任何其他问题,请告诉我。

使用kibe首先给出的线索,自己尝试。这是一种方法,我尽可能多地保留您的原始代码,并编写您想要的输出。希望有帮助!如果有什么不合理的地方请告诉我/如果你需要任何解释

var groups = [
    {name: 'fruits', words:["apple","strawberry", "banana"]},
    {name: 'test', words:["asd","qwe"]}
];

var searchwords = ["apple", "strawberry"];

// Initialize empty array with size equal to size of groups
var res = Array(groups.length).fill(0);
// Initialize variables to hold biggest number of matches and index of said matches
var biggestIndex;
var biggestValue = 0;

for(i = 0; i < groups.length; i++) {
    for(j = 0; j < groups[i].words.length; j++) {
        if(searchwords.includes(groups[i].words[j]) == true){
            res[i] += 1;
            if(res[i] > biggestValue){
                biggestValue = res[i];
                biggestIndex = i;
            }
        }
    }
}

// biggestIndex holds the index with the most matches
console.log("The best group is", groups[biggestIndex].name, "group");
// Res holds the list output you wanted
console.log(res);
var组=[
{名称:'水果',单词:[“苹果”、“草莓”、“香蕉”]},
{名称:'测试',单词:[“asd”,“qwe”]}
];
var searchwords=[“苹果”、“草莓”];
//初始化大小等于组大小的空数组
var res=数组(groups.length).fill(0);
//初始化变量以保存最大数量的匹配项和所述匹配项的索引
var指数;
var biggestValue=0;
对于(i=0;ibiggestValue){
最大值=res[i];
最大指数=i;
}
}
}
}
//biggestIndex保存匹配项最多的索引
log(“最好的组是”,groups[biggestIndex].name,“group”);
//Res保存您想要的列表输出
控制台日志(res);

有很多方法可以做到这一点。我更喜欢:

const result = groups.map(group => {
    const matchedwords = group.words.filter(word => searchwords.includes(word));
    return matchedwords.length;
}

附言:遵循kibe的答案,尝试解决你正在做的事情。如果您不熟悉它们,我还建议您查看它们和文档。使用阵列时,它们非常方便。

哦,这个链接也很有用。。但这里只有一个财产谢谢你!我有一个错误:无法读取未定义的属性'length'。。在第[i]组,水果。length@DaveReiß那是我的错;它应该是
组[i].words.length