编写一个接受 URL 数组并返回预期输出的域频率“分类”函数

问题描述

输入:

const urls = [
    'www.google.com','www.yahoo.com','xyz.www.google.com','abc.xyz.www.google.com','google.com','yahoo.com','news.yahoo.com','abc.news.yahoo.com',];
categorize(urls);

上面的分类函数应该返回下面的输出。 例如,“www.google.com”出现在“www.google.com”、“xyz.www.google.com”、“abc.xyz.www.google.com”等中。 “google.com”出现在“google.com”、“www.google.com”、“xyz.www.google.com”、“abc.xyz.www.google.com”等中。

预期输出

{
 "google.com": 6,"yahoo.com": 5,"www.google.com": 4,"www.yahoo.com": 2,"news.yahoo.com": 2,"xyz.www.google.com": 3,"abc.news.yahoo.com": 1,"abc.xyz.www.google.com": 2,"com": 11
}

解决方法

您首先需要创建一个对象,例如 const categorized = {}

然后使用 for 循环(或 forEach)遍历 url。

对于每个网址,您需要找到所有可能的域。可能有一些很好的方法可以做到这一点。

对于每个域,如果对象尚不存在,则将其添加到对象中并将值设置为 1。如果该键已存在,则将其添加到值中。