如何多次将同一元素添加到数组?

时间:2020-08-31 14:15:07

标签: javascript arrays

我在购物车,我有些困惑。有一个计数器,用于计数当前产品的数量。例如:用户可以购买5本书或更多。因此,我需要创建一个函数,将元素添加的次数与用户选择元素的次数相同。

我做了这样的事情:

[...state.shoppingCart, new Array(state.booksNumber).fill({...action.book})]

但是,它当然会在数组中创建一个新数组...那么,如何在不删除旧元素或在数组内部创建新数组的情况下,向数组中添加元素呢?

我需要一种实用的方法,没有循环。

4 个答案:

答案 0 :(得分:1)

const newArray = new Array(state.booksNumber).fill({...action.book})
[...state.shoppingCart, ...newArray]

答案 1 :(得分:0)

您可以使用concat方法

 const a = new Array([1,3,4]).concat([1,3,4])
 console.log(a)

这会将元素添加到数组中。

或者您可以尝试使用传播算子。

const arr=[1,2,3,4]
const a = new Array([1,3,4,.... arr]);
console.log(a)

答案 2 :(得分:0)

再次简单地使用传播语法:

[...state.shoppingCart, ...new Array(state.booksNumber).fill({...action.book})]

这会将新阵列散布到现有阵列中。

答案 3 :(得分:0)

您在创建的新数组的返回数组中缺少散布运算符。

添加价差运算符可让您合并/合并两个数组项。

例如:

const arrayOne = [1,2,3];
const arrayTwo = [4,5,6];
const mergedArrays = [...arrayOne, ...arrayTwo] //[1,2,3,4,5,6]

还假设action.book是要在创建的new Array()内多次添加的对象,则无需进行散布,因为它将用每个对象填充数组。 / p>

此功能可能会帮助您寻找所需内容:

const addMultipleItems = (action) => {
    const items = new Array(state.booksNumber).fill(action.book);
    return [...state.shoppingCart, ...items];
}