最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

使用lodash映射键或任何其他javascript方法(NodeJs)动态更改对象键

IT培训 admin 10浏览 0评论

使用lodash映射键或任何其他javascript方法(NodeJs)动态更改对象键

这是我的json对象:

{ 
excels:
   [ { field1: 'Mohamed',
       field2: '123456789',
       field3: 'Sameer',
       field4: 'Chennai',
       field5: 'Chennai',
       field6: 'Asia',
       field7: '11111',
       field8: '10-10-1990',
       field9: '[email protected]'},

     { field1: 'Ganesh',
       field2: '987654321',
       field3: 'Pandiyan',
       field4: 'Chennai',
       field5: 'Chennai',
       field6: 'Asia',
       field7: '11111',
       field8: '10-10-1990',
       field9: '[email protected]' } ],
  header:
   { '1': 'firstName',
     '2': 'gsm',
     '3': 'lastName',
     '4': 'street',
     '5': 'city',
     '6': 'region',
     '7': 'postcode',
     '8': 'dob',
     '9': 'email' } 

}

我想在这上面做json:

[{firstName:Mohamed;gsm:123456789;lastName:Sameer;street:Chennai;city:Chennai;region:Asia;postcode:11111;dob:10-10-1990;email:[email protected]},{firstName:Ganesh;gsm:987654321;lastName:Pandiyan;street:Chennai;city:Chennai;region:Asia;postcode:11111;dob:10-10-1990;email:[email protected]}]

但是有一个条件,如果我的json头对象看起来像:

header: 
   { '1': 'lastName',
     '2': 'gsm',
     '3': 'firstName',
     '4': 'street',
     '5': 'city',
     '6': 'region',
     '7': 'postcode',
     '8': 'dob',
     '9': 'email' } 

P.S:我正在更改firstName和lastName顺序

我想在这上面做json:

[{firstName:Sameer;gsm:123456789;lastName:Mohamed;street:Chennai;city:Chennai;region:Asia;postcode:11111;dob:10-10-1990;email:[email protected]},{firstName:Pandiyan;gsm:987654321;lastName:Ganesh;street:Chennai;city:Chennai;region:Asia;postcode:11111;dob:10-10-1990;email:[email protected]}]

查看名字和姓氏

这该怎么做?是否可以使用任何js方法执行此操作?

回答如下:

你可以通过执行一些简单的数组/对象操作来完成它,

var result = source.excels.map((details) =>
  Object.keys(details).reduce((a, b) =>
    (a[source.header[b.replace('field', '')]] =
      details[b], a), {}));

console.log(result);
// result would contain [{firstName:'Mohamed',gsm:123456789, ......

DEMO

这里需要了解的事情Array#mapArray#reduceObject#keysArrow functions

注意:在处理对象时,我们不能依赖订单。这就是我依赖关键字符串的原因。

使用lodash映射键或任何其他javascript方法(NodeJs)动态更改对象键

这是我的json对象:

{ 
excels:
   [ { field1: 'Mohamed',
       field2: '123456789',
       field3: 'Sameer',
       field4: 'Chennai',
       field5: 'Chennai',
       field6: 'Asia',
       field7: '11111',
       field8: '10-10-1990',
       field9: '[email protected]'},

     { field1: 'Ganesh',
       field2: '987654321',
       field3: 'Pandiyan',
       field4: 'Chennai',
       field5: 'Chennai',
       field6: 'Asia',
       field7: '11111',
       field8: '10-10-1990',
       field9: '[email protected]' } ],
  header:
   { '1': 'firstName',
     '2': 'gsm',
     '3': 'lastName',
     '4': 'street',
     '5': 'city',
     '6': 'region',
     '7': 'postcode',
     '8': 'dob',
     '9': 'email' } 

}

我想在这上面做json:

[{firstName:Mohamed;gsm:123456789;lastName:Sameer;street:Chennai;city:Chennai;region:Asia;postcode:11111;dob:10-10-1990;email:[email protected]},{firstName:Ganesh;gsm:987654321;lastName:Pandiyan;street:Chennai;city:Chennai;region:Asia;postcode:11111;dob:10-10-1990;email:[email protected]}]

但是有一个条件,如果我的json头对象看起来像:

header: 
   { '1': 'lastName',
     '2': 'gsm',
     '3': 'firstName',
     '4': 'street',
     '5': 'city',
     '6': 'region',
     '7': 'postcode',
     '8': 'dob',
     '9': 'email' } 

P.S:我正在更改firstName和lastName顺序

我想在这上面做json:

[{firstName:Sameer;gsm:123456789;lastName:Mohamed;street:Chennai;city:Chennai;region:Asia;postcode:11111;dob:10-10-1990;email:[email protected]},{firstName:Pandiyan;gsm:987654321;lastName:Ganesh;street:Chennai;city:Chennai;region:Asia;postcode:11111;dob:10-10-1990;email:[email protected]}]

查看名字和姓氏

这该怎么做?是否可以使用任何js方法执行此操作?

回答如下:

你可以通过执行一些简单的数组/对象操作来完成它,

var result = source.excels.map((details) =>
  Object.keys(details).reduce((a, b) =>
    (a[source.header[b.replace('field', '')]] =
      details[b], a), {}));

console.log(result);
// result would contain [{firstName:'Mohamed',gsm:123456789, ......

DEMO

这里需要了解的事情Array#mapArray#reduceObject#keysArrow functions

注意:在处理对象时,我们不能依赖订单。这就是我依赖关键字符串的原因。

发布评论

评论列表 (0)

  1. 暂无评论