将对象集转换为数组项

use*_*521 2 javascript ecmascript-6 lodash

我有几个像这样的对象:

{'id[0]': 2}
{'url[0]': 11}
{'id[1]': 3}
{'url[1]': 14}
Run Code Online (Sandbox Code Playgroud)

我希望得到这样的东西:

[{id:2, url:11}, {id:3, url:14}]
Run Code Online (Sandbox Code Playgroud)

我也在我的项目中使用了lodash.也许lodash有一些方法吗?

Nin*_*olz 5

您可以对键使用正则表达式,并在必要时创建新对象.然后将值分配给键.

var data = [{ 'id[0]': 2 }, { 'url[0]': 11 }, { 'id[1]': 3 }, { 'url[1]': 14 }],
    result = [];

data.forEach(function (a) {
    Object.keys(a).forEach(function (k) {
        var keys = k.match(/^([^\[]+)\[(\d+)\]$/);
        if (keys.length === 3) {
            result[keys[2]] = result[keys[2]] || {};
            result[keys[2]][keys[1]] = a[k];
        }
    });
});

console.log(result);
Run Code Online (Sandbox Code Playgroud)