首页 > 解决方案 > 按字段格式化对象

问题描述

const data = {
   language: 'en',
   type: 'trx',
   country: 'Croatia',
   Method: 'trx_pay',
   Email: 'email',
   Phone: '123',
   City: 'Zagreb'
}

我需要将上述对象格式化为这样的格式:

const data = {
   language: 'en',
   type: 'trx',
   country: 'Croatia',
   userData: {
     Method: 'trx_pay',
     Email: 'email',
     Phone: '123',
     City: 'Zagreb'
   }
}

PascalCase 中的所有字段都应该放入一个嵌套对象中。另外,我完全了解 camelCase 中的字段(语言、类型和国家/地区)。

到目前为止,这是我使用 Lodash 尝试过的:

const staticKeys = ['language', 'type', 'country']; // These keys can't changes

const staticData = pick(data, staticKeys);
const userData = omit(data, staticKeys);

const res = { ...staticData, userData };

没有 Lodash 有没有更优雅的方法?

标签: javascriptobject

解决方案


如果不想使用 lodash,可以使用解构赋值。由于您知道静态键,因此您可以解构它们(而不是将它们放入数组中),并使用其余语法( ...) 来获取所有其他剩余属性:

const data = { language: 'en', type: 'trx', country: 'Croatia', Method: 'trx_pay', Email: 'email', Phone: '123', City: 'Zagreb' };

const {language, type, country, ...userData} = data;
const res = {language, type, country, userData};
console.log(res);


推荐阅读