来个 js 大牛,如何简洁的处理这种数组转换成对象?

有这样一个 Array,
[{key:xxx},{value:xxx}]

key value是固定的属性

[
    {key:'alan',value:12},
    {key:'mike',value:18}
]

期望值

{alan:12,mike:18}

希望不借助新的变量,简洁优雅一些~

阅读 8.1k
6 个回答

其实所谓简洁,无非就是找现成的功能函数替换掉一堆逻辑代码……所以,自己封个工具函数,一句调用是最简洁的!

const data = [
    { key: "alan", value: 12 },
    { key: "mike", value: 18 }
];

// 就这句话,换行主要是为了看清楚,可以不换
const result = Object.fromEntries(
    data.map(({ key, value }) => [key, value])
);

console.log(result);

[{key:'alan',value:12},{key:'mike',value:18}].reduce((res, o) => (res[o.key] = o.value, res), {})

刚学的fromEntries方法

const data = [
    {key:'alan',value:12},
    {key:'mike',value:18}
]

Object.fromEntries(data.map( res => [res.key,res.value]))
const data = [
    { key: "alan", value: 12 },
    { key: "mike", value: 18 }
];
const result = data.map((item) => ({[item.key]: item.value}))
const data = [
    { key: "alan", value: 12 },
    { key: "mike", value: 18 }
];
var ans = {};
data.map(({ key, value }) => [key, value]).forEach(item => {
    ans[item[0]]=item[1]
});
console.log(ans);

如果知道系统方法就用系统的,不知道系统方法就自己用传统方法。

新手上路,请多包涵

可以考虑使用Object.fromEntries

Object.fromEntries(data.map(({key, value}) => [key, value]))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏