我在购物车,我有些困惑。有一个计数器,用于计数当前产品的数量。例如:用户可以购买5本书或更多。因此,我需要创建一个函数,将元素添加的次数与用户选择元素的次数相同。
我做了这样的事情:
[...state.shoppingCart, new Array(state.booksNumber).fill({...action.book})]
但是,它当然会在数组中创建一个新数组...那么,如何在不删除旧元素或在数组内部创建新数组的情况下,向数组中添加元素呢?
我需要一种实用的方法,没有循环。
答案 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];
}