javascript - 如何使用 lodash 格式化数组数组

标签 javascript underscore.js lodash

我正在使用 lodash 通过属性“isRouteId”对数组进行分组,如下所示:

    [
    [
        {
            "key": 0,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "7778a8b2-2a92-49f3-b910-089231678412",
            "isPaused": false,
            "subdivisionId": 0,
            "latlngObj": {
                "latitude": 29.5407882,
                "longitude": -95.7732222
            }
        },
        {
            "key": 1,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "7778a8b2-2a92-49f3-b910-089231678412",
            "isPaused": false,
            "subdivisionId": 0,
            "latlngObj": {
                "latitude": 29.5406792,
                "longitude": -95.7732779
            }
        }
    ],
    [
        {
            "key": 71,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "ddb42ef3-6c0e-48fc-9bcb-0a64ad422db4",
            "isPaused": false,
            "subdivisionId": 0,
            "latlngObj": {
                "latitude": 29.5332458,
                "longitude": -95.7766514
            }
        },
        {
            "key": 72,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "ddb42ef3-6c0e-48fc-9bcb-0a64ad422db4",
            "isPaused": false,
            "subdivisionId": 0,
            "latlngObj": {
                "latitude": 29.5331976,
                "longitude": -95.7765264
            }
        },
        {
            "key": 73,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "ddb42ef3-6c0e-48fc-9bcb-0a64ad422db4",
            "isPaused": false,
            "subdivisionId": 0,
            "latlngObj": {
                "latitude": 29.5331486,
                "longitude": -95.7763998
            }
        }
    ],
    [
        {
            "key": 93,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "7a343973-95b4-4508-9076-15a6ebae5555",
            "isPaused": false,
            "subdivisionId": 0,
            "latlngObj": {
                "latitude": 29.5321796,
                "longitude": -95.7738858
            }
        },
        {
            "key": 94,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "7a343973-95b4-4508-9076-15a6ebae5555",
            "isPaused": false,
            "subdivisionId": 0,
            "latlngObj": {
                "latitude": 29.5321292,
                "longitude": -95.7737588
            }
        }
    ]
]

我需要下一步的帮助,即获取嵌套的“latlngObj”属性并将它们移动到根级别。 期望的结果需要如下所示:

    [
    [
        {
            "key": 0,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "7778a8b2-2a92-49f3-b910-089231678412",
            "isPaused": false,
            "subdivisionId": 0,
            "latitude": 29.5407882,
             "longitude": -95.7732222
        },
        {
            "key": 1,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "7778a8b2-2a92-49f3-b910-089231678412",
            "isPaused": false,
            "subdivisionId": 0,
            "latitude": 29.5406792,
            "longitude": -95.7732779
        }
    ],
    [
        {
            "key": 71,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "ddb42ef3-6c0e-48fc-9bcb-0a64ad422db4",
            "isPaused": false,
            "subdivisionId": 0,
            "latitude": 29.5332458,
            "longitude": -95.7766514
        },
        {
            "key": 72,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "ddb42ef3-6c0e-48fc-9bcb-0a64ad422db4",
            "isPaused": false,
            "subdivisionId": 0,
            "latitude": 29.5331976,
            "longitude": -95.7765264
        },
        {
            "key": 73,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "ddb42ef3-6c0e-48fc-9bcb-0a64ad422db4",
            "isPaused": false,
            "subdivisionId": 0,
            "latitude": 29.5331486,
            "longitude": -95.7763998
        }
    ],
    [
        {
            "key": 93,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "7a343973-95b4-4508-9076-15a6ebae5555",
            "isPaused": false,
            "subdivisionId": 0,
            "latitude": 29.5321796,
             "longitude": -95.7738858
        },
        {
            "key": 94,
            "isSurveyId": null,
            "isPausedId": null,
            "isRouteId": "7a343973-95b4-4508-9076-15a6ebae5555",
            "isPaused": false,
            "subdivisionId": 0,
            "latitude": 29.5321292,
            "longitude": -95.7737588
        }
    ]
]

我知道如何使用 jquery 来做到这一点,但这是不可用的。我需要使用 lodash、下划线或 javascript 来实现这一点。

plunker

  var result = _(routesById).groupBy('isRouteId').values().value();

console.log(result);

最佳答案

我会采取以下方法:

_(coll)
  .flatten()
  .map(i => _.assign({}, _.omit(i, 'latlngObj'), i.latlngObj))
  .groupBy('isRouteId')
  .value()

第一步是flatten()数组,那么你就可以 map()这几项。这个想法是 map 迭代器使用 assign()添加 latlngObj 属性,而 omit()用于删除 latlngObj,因为不再需要它(如果需要,您可以跳过 omit() 部分)。

然后就是一个简单的调用groupBy()完成链条。

关于javascript - 如何使用 lodash 格式化数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37530059/

相关文章:

javascript - 在 KeyUp 和粘贴事件上限制 AJAX 请求

javascript - 使用 Underscore/Lodash 分组和求和

javascript - 使用主干模板创建独特的 div

javascript - 在 Javascript 中用 null 填充缺失索引的值的最佳方法

javascript - 如何使用 lodash 更改深层嵌套对象中的对象键?

javascript - 使用递归函数 trim 字段无法按预期工作

javascript - 在 Javascript 中,如果函数已经在执行,则将函数的执行排队,但取消​​任何先前排队的

javascript - 当测试失败时,TravisCI 不会让我的构建失败

Javascript URL 查询字符串逻辑

javascript - 使用 underscore.js 从嵌套对象(父子)中获取路径字段值