![](/img/trans.png)
[英]How to deeply map object keys with JavaScript (lodash)?
[英]Dynamically changing object keys with lodash map keys or any other javascript methods(NodeJs)
这是我的json对象:
{
excels:
[ { field1: 'Mohamed',
field2: '123456789',
field3: 'Sameer',
field4: 'Chennai',
field5: 'Chennai',
field6: 'Asia',
field7: '11111',
field8: '10-10-1990',
field9: 'sameer@gmail.com'},
{ field1: 'Ganesh',
field2: '987654321',
field3: 'Pandiyan',
field4: 'Chennai',
field5: 'Chennai',
field6: 'Asia',
field7: '11111',
field8: '10-10-1990',
field9: 'ganesh@gmail.com' } ],
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:sameer@gmail.com},{firstName:Ganesh;gsm:987654321;lastName:Pandiyan;street:Chennai;city:Chennai;region:Asia;postcode:11111;dob:10-10-1990;email:ganesh@gmail.com}]
但是有一个条件,如果我的json头对象看起来像:
header:
{ '1': 'lastName',
'2': 'gsm',
'3': 'firstName',
'4': 'street',
'5': 'city',
'6': 'region',
'7': 'postcode',
'8': 'dob',
'9': 'email' }
PS:我正在更改firstName和lastName顺序
我想在这上面做json:
[{firstName:Sameer;gsm:123456789;lastName:Mohamed;street:Chennai;city:Chennai;region:Asia;postcode:11111;dob:10-10-1990;email:sameer@gmail.com},{firstName:Pandiyan;gsm:987654321;lastName:Ganesh;street:Chennai;city:Chennai;region:Asia;postcode:11111;dob:10-10-1990;email:ganesh@gmail.com}]
查看名字和姓氏
这该怎么做? 是否可以使用任何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, ......
这里要学习的内容Array#map
, Array#reduce
, Object#keys
, Arrow functions
。
注意:在处理对象时,我们不能依赖订单。 这就是我依赖关键字符串的原因。
const persons = {
excels:
[ { field1: 'Mohamed',
field2: '123456789',
field3: 'Sameer',
field4: 'Chennai',
field5: 'Chennai',
field6: 'Asia',
field7: '11111',
field8: '10-10-1990',
field9: 'sameer@gmail.com'},
{ field1: 'Ganesh',
field2: '987654321',
field3: 'Pandiyan',
field4: 'Chennai',
field5: 'Chennai',
field6: 'Asia',
field7: '11111',
field8: '10-10-1990',
field9: 'ganesh@gmail.com' } ],
header:
{ '1': 'firstName',
'2': 'gsm',
'3': 'lastName',
'4': 'street',
'5': 'city',
'6': 'region',
'7': 'postcode',
'8': 'dob',
'9': 'email' }
}
const personKeys = Object.keys(persons.header)
const formattedPersons = persons.excels.map((p) => {
const formattedPerson = personKeys.reduce((newPerson, currentKey) => {
newPerson[persons.header[currentKey]] = p[`field${currentKey}`]
return newPerson
}, {})
return formattedPerson;
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.