javascript - 如何将对象文字作为键值对推送到数组?
问题描述
将每对分成数组的最佳方法是什么?
const myObject = {
firstName: 'John',
surname: 'Doe',
city: 'New York'
}
到:
[{'firstName': 'John'}, {'surname': 'Doe'}, {'city': 'New York'}]
顺便说一句,旧帖子建议使用 lodash 映射
const newArray = _.map(myObject, (value, key) => ({key, value}))
但它会返回类似:
[ { key: 'firstName', value: 'John' },
{ key: 'surname', value: 'Doe' },
{ key: 'city', value: 'New York' } ]
我不希望钥匙在那里。
解决方案
您可以使用纯 JS 实现所需的结果:
Object.keys(myObject).map(key => ({[key]: myObject[key]}));
这种方法使用ES2015 的计算属性名称。
正如评论中所建议的,您也可以使用Object.entries
:
Object.entries(myObject).map(([p, v]) => ({[p]: v}))
如果你还是想使用 lodash,你应该key
用方括号括起来:
const newArray = _.map(myObject, (value, key) => ({[key], value}))
推荐阅读
- ruby-on-rails - ROR:是什么导致未初始化的常量
- c - 从源代码编译 Squashfs 工具时出错
- python - Sypder:关闭绘图窗口后,如何让 pandas.plot(subplots =True) 再次显示?
- sql-server - 使用 SMTP Connection Manager-SSIS 2017 导入包
- angularjs - 从 AngularJS 前端到 Spring rest 后端的 CORS 问题
- r - 显示 y 轴 ggplot 中的每个中断
- laravel - Composer.json 说 php 补丁的无效字符串为星号(*)
- r - APE/Phangorn:如何包装尖端标签?
- c++ - tcp/ip ssh隧道传输数据时如何避免重复读取数据?
- android - 三星 Galaxy 8/9 和许多其他设备上的 Android FB 登录失败