数组如下:
let ary = [
{fileName: "文档1", nodeId: "1133275924701949952"},
{fileName: "文档2", nodeId: "1133275743956807681"},
{fileName: "文档3",nodeId: "1133275683449434112"},
{fileName: "文档4", nodeId: "1133275743956807681"},
{fileName: "文档5", nodeId: "1133275683449434112"},
{fileName: "文档6",nodeId: "1133275924701949952"},
{fileName: "文档7", nodeId: "1133275924701949951"}
]
刚开始的时候确实没有思路,最后在队友的帮助下得到了解决,这里记录下实现思路
function processData(ary){
// 定义一个空对象来做存储判断
let hasMap = {} ;
ary.forEach( fileInfo =>{
// 取出每一项中的nodeId和fileName=>ES6的解构赋值
let { nodeId,fileName} = fileInfo
//如果对应的id在对象中不存在的话,我们将nodeId作为key将fileName作为value
if(!hasMap[nodeId]){
hasMap[nodeId] = fileName;
}
//如果存在的话的在原有的nodeId上面拼接上这个fileName
else{
hasMap[nodeId] += fileName;
}
})
/* object.values(obj),返回一个数组,其元素是在对象找到可枚举属性值。属性的顺序于通过手动循环对象的属性值所给出的顺序相同,
obj被返回可枚举属性值对象,
返回值一个包含对象自身的所有可枚举属性值得数组 */
return Object.values(hasMap)
}
数组操作在日常的工作中用到的很多,我们需要多练习来锻炼自己的思维方式!