我正在努力解决问题。

我有一个对象数组,它看起来像这样:

[
    {date_range_one: '2018-03-03+-+2018-05-01'},
    {date_range_two: '2001-11-27+-+2018-05-01'},
    {filter: '1'},
    {filter: '4'},
    {filter: '18'},
]


我需要将其转换为:

[
    {date_range_one: '2018-03-03+-+2018-05-01'},
    {date_range_two: '2001-11-27+-+2018-05-01'},
    {filter: [1,3,18]},
]


Object.assign将覆盖筛选器值到最新的({filter:18}),但我需要将它们合并到(Array或String)中。

没有任何js库,有没有办法做到这一点?

干杯

最佳答案

您可以使用地图并渲染收集的值。

它通过使用对象的键和值来工作,并将数组设置为值或值本身。

为了获取对象数组,需要进行映射,在该映射中使用键和值创建对象。



var data = [{ date_range_one: '2018-03-03+-+2018-05-01' }, { date_range_two: '2001-11-27+-+2018-05-01' }, { filter: '1' }, { filter: '4' }, { filter: '18' }],
    result = Array.from(
        data.reduce((m, o) => {
            var [key, value] = Object.entries(o)[0],
                item = m.get(key);

            return m.set(key, item ? [].concat(item, value) : value);
        }, new Map),
        ([k, v]) => ({ [k]: v })
    );

console.log(Array.from(result));

.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - Javascript检查数组中的重复对象,然后将值合并到数组中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50161268/

10-09 07:51
查看更多