js如何优雅地将一段含id的json转换成键名为该id的关联数组?

[
    {
        "id": "1",
        "file_name": "fdsa",
        "size": "111",
        "modified_time": "2017-01-09 17:36:45.0",
        "password": "qqq"
    },
    {
        "id": "2",
        "file_name": "jkl",
        "size": "22",
        "modified_time": "2017-01-09 17:36:45.0",
        "password": "www"
    }
]

上面这段json如何优雅地将它转换为关联数组,并且该数组的键key为他的id。

我目前只知道用for循环依次遍历老数组,然后丢到一个新数组中,请问还有其他什么优雅的写法吗?

阅读 5.2k
5 个回答
const arr = [{
  "id": "1",
  "file_name": "fdsa",
  "size": "111",
  "modified_time": "2017-01-09 17:36:45.0",
  "password": "qqq"
}, {
  "id": "2",
  "file_name": "jkl",
  "size": "22",
  "modified_time": "2017-01-09 17:36:45.0",
  "password": "www"
}];

const data = arr.reduce((obj, v) => {
  obj[v.id] = v;
  return obj;
}, {});
[
    {
        "id": "1",
        "file_name": "fdsa",
        "size": "111",
        "modified_time": "2017-01-09 17:36:45.0",
        "password": "qqq"
    },
    {
        "id": "2",
        "file_name": "jkl",
        "size": "22",
        "modified_time": "2017-01-09 17:36:45.0",
        "password": "www"
    }
].map(function(item, index){
     return { [String(item.id)]: item}
})

谢邀,不知道你要转成什么样的结果,把id座位key,用forEach放进新的数组中挺好的。

Array.reduce也是个方法,不知道优雅是怎么定义的

用for语句我认为最优雅,第一最直觉,第二最灵活,第三性能最好
除了代码会多写几行外,不知道有什么能比得上了呢?

JS中只有数组,没有关联数组这东西,你应该是指对象?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题