这是我在这里提出的第一个问题。似乎没有在其他地方被问到,但我又不确定如何准确地表达我的问题。
如何转换如下所示的数组:
var message = {
pay_key: '12345',
'transaction[0].sender_id': 'abc',
'transaction[0].is_primary_receiver': 'false',
'transaction[0].id': 'def',
'transaction[1].sender_id': 'xyz',
'transaction[1].is_primary_receiver': 'false',
'transaction[1].id': 'tuv',
};
变成这样的东西:
{
pay_key : '12345',
transaction : [
{
sender_id : 'abc',
is_primary_receiver : 'false',
id : 'def'
},
{
sender_id : 'xyz',
is_primary_receiver : 'false',
id : 'tuv'
}
]
}
我无法控制第一个对象的格式,因为它来自外部服务。我正在尝试将消息对象插入到 MongoDB 集合中,但是当我尝试按原样插入时,出现错误。所以我试图将其放入正确的形式。
我应该使用下划线吗?我已经尝试过 _.each 但无法让它工作。
最佳答案
我的看法..
var message = {
pay_key: '12345',
'transaction[0].sender_id': 'abc',
'transaction[0].is_primary_receiver': 'false',
'transaction[0].id': 'def',
'transaction[1].sender_id': 'xyz',
'transaction[1].is_primary_receiver': 'false',
'transaction[1].id': 'tuv',
};
message.transaction=[];
for (var p in message) {
var m = p.match(/^transaction\[(\d+)\]\.(.*)/);
if (m&&m[1]&&m[2]) {
message.transaction[m[1]]=message.transaction[m[1]]||{};
message.transaction[m[1]][m[2]]=message[p];
delete message[p];
}
}
关于javascript - 如何将某些对象键分离到它们自己的数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31331032/