javascript - 如何将某些对象键分离到它们自己的数组中?

标签 javascript json mongodb underscore.js

这是我在这里提出的第一个问题。似乎没有在其他地方被问到,但我又不确定如何准确地表达我的问题。

如何转换如下所示的数组:

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/

相关文章:

javascript - 后端 api 与数据库(作为服务)

ios - 无法在 swift 3 的 Json 响应中获取键值对?

javascript - db.collection 不是函数 (MongoDB 3+)

mongodb - 使用 mgo 按 id 查找

javascript - 确保为 enzyme 加载 dom 环境

javascript - 尝试使用 React-Router 根据状态重定向用户时遇到问题

javascript - 我们如何在 Redux 异步操作中模拟获取?

java - 将嵌套 json 映射到具有原始 json 值的 pojo

javascript - 为什么 JSON.parse 不适用于 "23232323."?

c++ - Mongodb 客户端的 SCons 找不到 libboost_system