关于一例数据分析实例的最优解

shuihemi 2021-04-30 11:50:42
我这里有arr数组如下:
[
{"Area":"浙江","Name":"张三"},
{"Area":"浙江","Name":"李四"},
{"Area":"上海","Name":"王五"},
{"Area":"浙江","Name":"赵六"},
{"Area":"上海","Name":"田七"},
……
]

需要整理成ojb对象,格式如下:
{
"浙江":["张三","李四","赵六",…],
"上海":["王五","田七",…],
……
}

因本人刚刚接触Js,不知道如下的写法是否是最优解,如果是你,你又会怎么解决这个问题呢?
    let ojb = {}
arr.forEach(value=>{
if(value['Area'] in ojb){
ojb[value['Area']].push(value['Name'])
}else{
ojb[value['Area']]=[value['Name']]
}
})

...全文
434 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
BuBu高打火机 2021-05-03
  • 打赏
  • 举报
回复
需要遍历,所以时间复杂度最优也是O(n),遍历上就不用考虑太多了,只是写法的区别罢了,用reduce写起来代码量会稍微少一些

const result = arr.reduce((total, item) => {
  if (!total[item.Area]) {
    total[item.Area] = [];
  }
  /**
   * TODO: 可以加入去重操作
   */
  total[item.Area].push(item.Name);
  return total;
}, {});
泡泡鱼_ 2021-05-01
  • 打赏
  • 举报
回复
引用 楼主 shuihemi 的回复:
我这里有arr数组如下: [ {"Area":"浙江","Name":"张三"}, {"Area":"浙江","Name":"李四"}, {"Area":"上海","Name":"王五"}, {"Area":"浙江","Name":"赵六"}, {"Area":"上海","Name":"田七"}, …… ] 需要整理成ojb对象,格式如下: { "浙江":["张三","李四","赵六",…], "上海":["王五","田七",…], …… } 因本人刚刚接触Js,不知道如下的写法是否是最优解,如果是你,你又会怎么解决这个问题呢?
    let ojb = {}
    arr.forEach(value=>{
      if(value['Area'] in ojb){
        ojb[value['Area']].push(value['Name'])
      }else{
        ojb[value['Area']]=[value['Name']]
      }
    })
这功能不复杂,实现起来都大都小异 内部代码我会写成:

obj[ item.Area ] = obj[ item.Area ] || []
    obj[item.Area].push(item.Name)
或者干脆用array.reduce

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧