javascript - 以优化方式处理 JSON
问题描述
有一个名称和技能字段作为数组 f 对象的 JSON,如何操作这个 JSON?
我正在创建新的 Array Unique,它是独特的技能集,并将其与背书数组的所有技能值进行比较,不知何故我没有得到解决方案,我正在为此寻找天真的和优化的解决方案。
let endorsement = [
{ name: 'James', skill: 'JS' },
{ name: 'steve', skill: 'CSS' },
{ name: 'BOB', skill: 'JS' },
{ name: 'jack', skill: 'HTML' },
{ name: 'bob', skill: 'CSS' },
{ name: 'john', skill: 'JS' }
]
//expected Array = [
// {skill : 'JS , people : ['James','BOB','john'],count : 3},
// {skill : 'HTML , people : ['jack'] , count : 1},
// {skill : 'CSS , people : ['steve' ,'bob] , count : 2}
//]
let skillArray = [...endorsement];
const skillsList = skillArray.map(item => item.skill);
let Unique = [... new Set(skillsList)];
const SkillSet = [];
skillsList.map(item => {
const newObj = {
skill: '',
people: [],
count: 0
}
Unique.map(value => {
if (value === item) {
newObj.skill = value;
newObj.people.push(item.name);
newObj.count += 1;
}
delete value;
SkillSet.push(newObj);
delete newObj;
})
})
console.log(SkillSet);
解决方案
如果您想按技能对名称进行分组:
let endorsements = [
{ name: 'James', skill: 'JS' },
{ name: 'steve', skill: 'CSS' },
{ name: 'BOB', skill: 'JS' },
{ name: 'jack', skill: 'HTML' },
{ name: 'bob', skill: 'CSS' },
{ name: 'john', skill: 'JS' }
];
let unique = {};
endorsements.forEach(endorsement => {
unique[endorsement.skill] = unique[endorsement.skill] ? unique[endorsement.skill].push(endorsement.name): [endorsement.name]
})
/*
unique becomes
{
JS: ['James', 'BOB', 'john'],
CSS: ['steve', 'bob'],
HTML: ['jack']
}
*/
推荐阅读
- python - 无法移动写在 .py 文件中的小部件位置
- jmeter - 我在运行负载测试套件时收到 EoF 错误。谁能告诉我为什么我会收到它以及如何解决它
- python - 如何检查至少一个变量是否具有特定值
- java - 在 netty TCP 连接上存储变量
- amazon-web-services - 在 API 网关获取请求中传递 OAUTH2.0 访问令牌
- javascript - 使用javascript创建多个元素,并在创建的元素中添加一些元素
- javascript - 在不使用括号的情况下调用 Javascript 数组方法
- azure - 从 AzureDevops 部署到 AWS 私有子网
- visual-studio-code - 是否有热键可以引用选定的文本?
- android - 有什么方法可以从 Windows 而不是从 BIOS 启用 VT-x?(我的BIOS有我忘记的密码)