Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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 在数组中查找具有特定属性的项,然后计算有多少项,然后使用相应结果的对象创建新数组_Javascript - Fatal编程技术网

Javascript 在数组中查找具有特定属性的项,然后计算有多少项,然后使用相应结果的对象创建新数组

Javascript 在数组中查找具有特定属性的项,然后计算有多少项,然后使用相应结果的对象创建新数组,javascript,Javascript,我有一系列的问题,比如测验,结构如下: import {SeoCategories} from "../enums/seo"; const initialQuestions = [ { question: "What is Pogo Sticking?", category: SeoCategories.analytics, options: [ { choice: "The act

我有一系列的问题,比如测验,结构如下:

import {SeoCategories} from "../enums/seo";

const initialQuestions = [
    {
        question: "What is Pogo Sticking?",
        category: SeoCategories.analytics,
        options: [
            {
                choice: "The act of visiting a website, then quickly leaving it",
                isCorrect: true,
                explanation: "This is incorrect due to ...",
            },
            {
                choice: "An SEO Tool",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            },
            {
                choice: "A way of Working",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            },
            {
                choice: "A website that is down",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            }
        ]
    },
    {
        question: "What tool can you use to track SEO of a website?",
        category: SeoCategories.analytics,
        options: [
            {
                choice: "SEO Spider",
                isCorrect: true,
                explanation: "This is incorrect due to ..."
            },
            {
                choice: "Geometrix",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            },
            {
                choice: "Pingdom",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            },
            {
                choice: "Javascript",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            }
        ]
    },
    {
        question: "What do you mean by Backlink?",
        category: SeoCategories.analytics,
        options: [
            {
                choice: "Incoming Links",
                isCorrect: true,
                explanation: "The incoming links to your website or webpage are referred to as Backlink. It is also called as an inbound link."
            },
            {
                choice: "Option 2",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            },
            {
                choice: "Option 3",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            },
            {
                choice: "Option 4",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            }
        ]
    },
    {
        question: "What is the main purpose of using keyword in SEO?",
        category: SeoCategories.tools,
        options: [
            {
                choice: "Keywords are used by search engines to populate the subjects over the internet",
                isCorrect: true,
                explanation: "Search engine stores keywords in the database, and when a search is done, it will come up with the best possible match."
            },
            {
                choice: "Option 2",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            },
            {
                choice: "Option 3",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            },
            {
                choice: "Option 4",
                isCorrect: false,
                explanation: "This is incorrect due to ..."

            }
        ]
    },
    {
        question: "What is keyword stemming?",
        category: SeoCategories.tools,
        options: [
            {
                choice: "The process of finding out new keywords",
                isCorrect: true,
                explanation: "TThe process of finding out new keywords from the root keyword from the search query is referred to as keywords stemming. Adding a prefix, suffix, or pluralization can be used to create the new keyword."
            },
            {
                choice: "Option 2",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            },
            {
                choice: "Option 3",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            },
            {
                choice: "Option 4",
                isCorrect: false,
                explanation: "This is incorrect due to ..."
            }
        ]
    }
];


我们可以看到,在这个数组中有5个问题。其中3个问题属于分析类,另外2个问题属于工具类

分析=五分之三。 工具=五分之二

我想要的是,通过这个问题数组,创建一个新的数组或对象,类似于:[分析:3,工具:2]这样我可以循环检查各个类别与问题总数,5

我不知道该怎么做。谢谢你抽出时间

您可以在数组上使用,并使用这些键/总数构建一个新对象

我添加了SeoCategories对象,因为您的问题中缺少了它

const SeoCategories={ 分析:“分析”, 工具:“工具” } 常量初始值问题=[{ 问题:什么是Pogo粘滞?, 类别:SeoCategories.analytics, 选项:[{ 选择:访问一个网站,然后迅速离开的行为, 是正确的, 说明:这是不正确的,因为。。。, }, { 选择:一个搜索引擎优化工具, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:一种工作方式, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:一个关闭的网站, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问:你可以使用什么工具来跟踪网站的搜索引擎优化?, 类别:SeoCategories.analytics, 选项:[{ 选择:搜索引擎优化蜘蛛, 是正确的, 说明:这是不正确的,因为。。。 }, { 选择:Geometrix, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:Pingdom, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:Javascript, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问题:你所说的反向链接是什么意思?, 类别:SeoCategories.analytics, 选项:[{ 选择:传入链接, 是正确的, 说明:指向您的网站或网页的传入链接称为反向链接。它也称为入站链接。 }, { 选择:选择2, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择3, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择4, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问题:在SEO中使用关键字的主要目的是什么?, 类别:SeoCategories.tools, 选项:[{ 选择:搜索引擎使用关键词在互联网上填充主题, 是正确的, 说明:搜索引擎将关键字存储在数据库中,当搜索完成时,它将找到可能的最佳匹配项。 }, { 选择:选择2, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择3, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择4, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问题:什么是关键词词干?, 类别:SeoCategories.tools, 选项:[{ 选择:寻找新关键字的过程, 是正确的, 说明:t从搜索查询的根关键字中查找新关键字的过程称为关键字词干分析。添加前缀、后缀或复数可用于创建新关键字。 }, { 选择:选择2, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择3, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择4, I正确:错误, 说明:这是不正确的,因为。。。 } ] } ]; //迭代数组 const out=initialQuestions.reduceac,c=>{ //从当前答案中分解类别 //在迭代中 常数{category}=c; //如果收集器对象上不存在该类别 //将其赋值为零,然后加一,否则只需加一即可 acc[类别]=acc[类别]| | 0+1; //为下一次迭代返回累加器 返回acc; }, {}; 控制台。注销 您可以在阵列上使用,并使用这些键/总数构建新对象

我添加了SeoCategories对象,因为 因为你的问题遗漏了

const SeoCategories={ 分析:“分析”, 工具:“工具” } 常量初始值问题=[{ 问题:什么是Pogo粘滞?, 类别:SeoCategories.analytics, 选项:[{ 选择:访问一个网站,然后迅速离开的行为, 是正确的, 说明:这是不正确的,因为。。。, }, { 选择:一个搜索引擎优化工具, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:一种工作方式, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:一个关闭的网站, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问:你可以使用什么工具来跟踪网站的搜索引擎优化?, 类别:SeoCategories.analytics, 选项:[{ 选择:搜索引擎优化蜘蛛, 是正确的, 说明:这是不正确的,因为。。。 }, { 选择:Geometrix, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:Pingdom, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:Javascript, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问题:你所说的反向链接是什么意思?, 类别:SeoCategories.analytics, 选项:[{ 选择:传入链接, 是正确的, 说明:指向您的网站或网页的传入链接称为反向链接。它也称为入站链接。 }, { 选择:选择2, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择3, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择4, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问题:在SEO中使用关键字的主要目的是什么?, 类别:SeoCategories.tools, 选项:[{ 选择:搜索引擎使用关键词在互联网上填充主题, 是正确的, 说明:搜索引擎将关键字存储在数据库中,当搜索完成时,它将找到可能的最佳匹配项。 }, { 选择:选择2, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择3, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择4, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问题:什么是关键词词干?, 类别:SeoCategories.tools, 选项:[{ 选择:寻找新关键字的过程, 是正确的, 说明:t从搜索查询的根关键字中查找新关键字的过程称为关键字词干分析。添加前缀、后缀或复数可用于创建新关键字。 }, { 选择:选择2, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择3, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择4, I正确:错误, 说明:这是不正确的,因为。。。 } ] } ]; //迭代数组 const out=initialQuestions.reduceac,c=>{ //从当前答案中分解类别 //在迭代中 常数{category}=c; //如果收集器对象上不存在该类别 //将其赋值为零,然后加一,否则只需加一即可 acc[类别]=acc[类别]| | 0+1; //为下一次迭代返回累加器 返回acc; }, {};
控制台。注销 这将使任务:

initialQuestions.reduce((a,b) => {a[b.category]? a[b.category]++:(a[b.category] = 1);return a}, {});
console.log(res);
const SeoCategories={分析:分析,工具:工具}; 常量初始值问题=[ { 问题:什么是Pogo粘滞?, 类别:SeoCategories.analytics, 选项:[ { 选择:访问一个网站,然后迅速离开的行为, 是正确的, 说明:这是不正确的,因为。。。, }, { 选择:一个搜索引擎优化工具, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:一种工作方式, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:一个关闭的网站, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问题:你能用什么工具 你用来跟踪网站的搜索引擎优化吗?, 类别:SeoCategories.analytics, 选项:[ { 选择:搜索引擎优化蜘蛛, 是正确的, 说明:这是不正确的,因为。。。 }, { 选择:Geometrix, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:Pingdom, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:Javascript, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问题:你所说的反向链接是什么意思?, 类别:SeoCategories.analytics, 选项:[ { 选择:传入链接, 是正确的, 说明:指向您的网站或网页的传入链接称为反向链接。它也称为入站链接。 }, { 选择:选择2, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择3, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择4, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问题:在SEO中使用关键字的主要目的是什么?, 类别:SeoCategories.tools, 选项:[ { 选择:搜索引擎使用关键词在互联网上填充主题, 是正确的, 说明:搜索引擎将关键字存储在数据库中,当搜索完成时,它将找到可能的最佳匹配项。 }, { 选择:选择2, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择3, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择4, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问题:什么是关键词词干?, 类别:SeoCategories.tools, 选项:[ { 选择:寻找新关键字的过程, 是正确的, 说明:t从搜索查询的根关键字中查找新关键字的过程称为关键字词干分析。添加前缀、后缀或复数可用于创建新关键字。 }, { 选择:选择2, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择3, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择4, I正确:错误, 说明:这是不正确的,因为。。。 } ] } ]; const res=initialQuestions.reducea,b=>{a[b.category]?a[b.category]+:a[b.category]=1;返回a},{};
console.logres 这将使任务:

initialQuestions.reduce((a,b) => {a[b.category]? a[b.category]++:(a[b.category] = 1);return a}, {});
console.log(res);
const SeoCategories={分析:分析,工具:工具}; 常量初始值问题=[ { 问题:什么是Pogo粘滞?, 类别:SeoCategories.analytics, 选项:[ { 选择:访问一个网站,然后迅速离开的行为, 是正确的, 说明:这是不正确的,因为。。。, }, { 选择:一个搜索引擎优化工具, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:一种工作方式, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:一个关闭的网站, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问:你可以使用什么工具来跟踪网站的搜索引擎优化?, 类别:SeoCategories.analytics, 选项:[ { 选择:搜索引擎优化蜘蛛, 是正确的, 说明:这是不正确的,因为。。。 }, { 选择:Geometrix, I正确:错误, 说明:这是不正确的,因为。。。 }, { C 海斯:平多姆, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:Javascript, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问题:你所说的反向链接是什么意思?, 类别:SeoCategories.analytics, 选项:[ { 选择:传入链接, 是正确的, 说明:指向您的网站或网页的传入链接称为反向链接。它也称为入站链接。 }, { 选择:选择2, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择3, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择4, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问题:在SEO中使用关键字的主要目的是什么?, 类别:SeoCategories.tools, 选项:[ { 选择:搜索引擎使用关键词在互联网上填充主题, 是正确的, 说明:搜索引擎将关键字存储在数据库中,当搜索完成时,它将找到可能的最佳匹配项。 }, { 选择:选择2, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择3, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择4, I正确:错误, 说明:这是不正确的,因为。。。 } ] }, { 问题:什么是关键词词干?, 类别:SeoCategories.tools, 选项:[ { 选择:寻找新关键字的过程, 是正确的, 说明:t从搜索查询的根关键字中查找新关键字的过程称为关键字词干分析。添加前缀、后缀或复数可用于创建新关键字。 }, { 选择:选择2, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择3, I正确:错误, 说明:这是不正确的,因为。。。 }, { 选择:选择4, I正确:错误, 说明:这是不正确的,因为。。。 } ] } ]; const res=initialQuestions.reducea,b=>{a[b.category]?a[b.category]+:a[b.category]=1;返回a},{};
console.logres;试着从forquestion的initialQuestions{console.logquestion.category;}开始,并投入一些精力。谁说我没有投入精力@Adder@CevinThomas当你试图解决的问题没有包括在问题中时,我们怎么可能知道你付出了多少努力?不管怎么说,js数据处理这样的问题吸引了很多答案,不管这个问题是否被问得很好,所以你有你的解决方案。我知道你不能知道这一点,但另一个人认为我没有,这显然是无知和粗鲁的。我没有包括我的答案,因为它们是基本的尝试,因为我的知识不超过初学者,所以它只会把空间弄得杂乱无章,没有任何价值@克莱康纳特是一个很好的观点,并没有从那个角度看问题。我的学习方法总是接收答案,然后在沙箱中分离代码,一步一步地学习函数在这种情况下做了什么,每个人都选择说reduce。下次我会记住这一点,谢谢@klaycontrol从forquestionofinitialquestions{console.logquestion.category;}开始,并投入一些精力。谁说我没有投入精力@Adder@CevinThomas当你试图解决的问题没有包括在问题中时,我们怎么可能知道你付出了多少努力?不管怎么说,js数据处理这样的问题吸引了很多答案,不管这个问题是否被问得很好,所以你有你的解决方案。我知道你不能知道这一点,但另一个人认为我没有,这显然是无知和粗鲁的。我没有包括我的答案,因为它们是基本的尝试,因为我的知识不超过初学者,所以它只会把空间弄得杂乱无章,没有任何价值@克莱康纳特是一个很好的观点,并没有从那个角度看问题。我的学习方法
arning总是接收答案,然后在沙箱中分离代码,一步一步地了解函数在这种情况下做了什么,每个人都选择说reduce。下次我会记住这一点,谢谢@Klayconyou可以在参数列表中执行解构权限:.reduceacc,{category}=>{acc[category]=…}你是对的,但出于实际原因,我喜欢在示例中定义每个步骤。你可以在参数列表中执行解构权限:.reduceacc,{category}=>{acc[category]=…}你是对的,但出于实际原因,我喜欢在我的示例中定义每个步骤。如果目标只是简单,你可以把它缩短很多:initialQuestions.reducea,{category}=>a[category]=-~a[category]&&a,{};如果目标只是简单,你可以把它缩短很多:initialQuestions.reducea,{category}=>a[category]=-~a[类别]&&a,{};