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,{};