Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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/13.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
2天数组输入到3D数组输出JavaScript。这是在一次技术审查中提出的_Javascript_Arrays_Sorting_3d_2d - Fatal编程技术网

2天数组输入到3D数组输出JavaScript。这是在一次技术审查中提出的

2天数组输入到3D数组输出JavaScript。这是在一次技术审查中提出的,javascript,arrays,sorting,3d,2d,Javascript,Arrays,Sorting,3d,2d,最近在一次科技屏幕采访中,我被要求解决这个算法。不知是否有人能帮我度过这段时间,我真的很想了解这一点 [ //input { skill: 'css', user: 'Bill' }, { skill: 'javascript', user: 'Chad' }, { skill: 'javascript', user: 'Bill' }, { skill: 'css', user: 'Sue' }, { skill: 'javascript', user: 'Sue' }, { skill

最近在一次科技屏幕采访中,我被要求解决这个算法。不知是否有人能帮我度过这段时间,我真的很想了解这一点

[    //input
{ skill: 'css', user: 'Bill' },
{ skill: 'javascript', user: 'Chad' },
{ skill: 'javascript', user: 'Bill' },
{ skill: 'css', user: 'Sue' },
{ skill: 'javascript', user: 'Sue' },
{ skill: 'html', user: 'Sue' }]


[   //expected output
{ skill: 'css', users: ['Bill', 'Sue'], count: 2 },
{ skill: 'javascript', users: ['Chad', 'Bill', 'Sue'], count: 3 },
{ skill: 'html', users: ['Sue'], count: 1 }]

您可以
输入数组减少到由
技能
索引的对象中,增加对象中的
计数
,并在过程中推送到
用户
数组:

const input=[{skill:'css',user:'Bill'},{skill:'javascript',user:'Chad'},{skill:'javascript',user:'Bill'},{skill:'css',user:'Sue'},{skill:'javascript',user:'Sue'},{skill:'html',user:'Sue'}]
console.log(Object.values(
input.reduce((a,{skill,user})=>{
如果(!a[skill])a[skill]={skill,用户:[],计数:0};
a[skill].users.push(用户);
a[技能].计数++;
返回a;
}, {})
));您可以使用a,并根据需要映射键和值

var input=[{skill:'css',user:'Bill'},{skill:'javascript',user:'Chad'},{skill:'javascript',user:'Sue'},{skill:'javascript',user:'Sue'},{skill:'html',user:'Sue'}],
结果=Array.from(
input.reduce((m,{skill,user})=>m.set(skill,[…(m.get(skill)| |[…),user]),新地图),
([skill,users])=>({skill,users,count:users.length})
);
控制台日志(结果)

.as console wrapper{max height:100%!important;top:0;}
的关键思想是通过
技巧对输入数据进行迭代并对用户进行分组,从而生成一个对象,其中每个键都包含一个各自用户的数组。为此,您可以使用

分组完成后,您可以迭代分组对象的键,并使用以下命令映射出所需的输出:

const data=[{skill:'css',user:'Bill'},{skill:'javascript',user:'Chad'},{skill:'javascript',user:'Sue'},{skill:'javascript',user:'Sue'},{skill:'html',user:'Sue'}]
const grouppedObj=data.reduce((all,{skill,user})=>{
如果(!all.hasOwnProperty(skill))all[skill]=[];
全部[技能]。推送(用户);
全部归还;
}, {});
const result=Object.keys(grouppedObj.map)(k=>{
返回{
技能:k,
用户:grouppedObj[k],
计数:grouppedObj[k]。长度
}
});

控制台日志(结果)Stackoverflow不是免费的代码编写服务或“如何”教程服务。让我们看看你试过什么。这里的目标是让其他人帮助您修复代码