扩展对象数组

时间:2019-08-27 01:31:17

标签: javascript arrays

假设我有这个数组:

[
    {
        id: 1,
        name: "Foo",
        quantity: 2
    },
    {
        id: 2,
        name: "Bar",
        quantity: 3
    },
]

我想根据quantity属性的值来扩展/乘以数组元素。所需的输出是这样的:

[
    {
        id: 1,
        name: "Foo"
    },
    {
        id: 1,
        name: "Foo"
    },
    {
        id: 2,
        name: "Bar"
    },
    {
        id: 2,
        name: "Bar"
    },
    {
        id: 2,
        name: "Bar"
    }
]

我可以不使用循环(for,foreach等)来获得该结果吗?可以使用Array对象的内置方法吗?

修改

对于任何可能需要它的人,这是我使用循环的解决方案。

const arrayOfObjects = [
    {
        id: 1,
        name: "Foo",
        quantity: 2
    },
    {
        id: 2,
        name: "Bar",
        quantity: 3
    },
];
let result = [];

arrayOfObjects.forEach(element => {
    for (let i = 0; i < element.quantity; i++) {
        const {
            quantity,
            ...newElement
        } = element;

        result.push(newElement);
    }
});

1 个答案:

答案 0 :(得分:0)

这是我自己使用循环的解决方案,正如注释中所述,使用Array对象的内置方法并不像使用简单循环那样有效。

const arrayOfObjects = [
    {
        id: 1,
        name: "Foo",
        quantity: 2
    },
    {
        id: 2,
        name: "Bar",
        quantity: 3
    },
];
let result = [];

arrayOfObjects.forEach(element => {
    for (let i = 0; i < element.quantity; i++) {
        const {
            quantity,
            ...newElement
        } = element;

        result.push(newElement);
    }
});