Message:这是我将在我的第一个项目(这是一个销售点系统)中使用Vue Js实现的一个函数,我使用纯JavaScript编写这个函数来简化这个问题.所以如果有人能帮我解决这个问题,我会非常感激,这样我就可以继续构建我的实践项目.谢谢❤️
My code explanation:我有一个名为newArray的空array.还有一个名为mainArray的数组,其中包含一些记录.我还包括了一个按钮,其中包含一个onClick事件,该事件触发函数clicked(),并向其传递一个参数,在本例中为2.
What I'm expecting to get:我想在newArray中判断一条记录,该记录包含2的id.如果找到这样的记录,我想在记录中将股票价值加1.如果通过mainArray在newArray循环中找不到这样的记录,请复制id为2的记录并将其添加到newArray中,然后将库存重置为1(因此,当我们再次单击按钮时,id为2的记录已经存在于newArray中,因此,我想向其添加1,因此现在是stock: 2).我已try 解决此问题,并附上了代码.
Summary according to my project:我在项目中循环了mainArray,因此每条记录都有一个带有clicked()函数的按钮,其中有一个名为productId的属性,productId作为参数传递给clicked()函数,我的期望是:如果我单击一个按钮,它将productId作为参数,函数将通过newArray查找id等于productId的记录(如果存在这样的记录)add stock by 1.如果没有这样的记录,则从id等于productId值的mainArray中获取记录,并通过将stock值设置为1 (stock: 1)将其放入newArray中.因此,当我单击具有相同属性值的相同按钮时,它会将1添加到记录中的库存中,该记录的相同值等于newArray (therefore the stock: 2 now)中的id,如果再次单击,则库存将为stock: 3,依此类推,再添加1.
function clicked(inp){
const newArray = [];
const mainArray = [
{ id: 1, name: "Shoes",stock: 5, price: 10 },
{ id: 2, name: "Bag",stock: 10, price: 50 },
];
newArray.forEach((item) => {
if(inp == item.id){
item.days = item.days + 1;
} else {
mainArray.forEach((element) => {
if(inp == element.id){
newArray.push(element);
}
});
}
});
console.log(newArray);
}
<button id="1" onClick="clicked(2)">Click me</button>