为什么我的对象没有被推入不同的数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的对象没有被推入不同的数组?相关的知识,希望对你有一定的参考价值。

我将对象从storeItems数组推送到cartItems数组并成功打印在div中,但在添加更多功能后,它不再添加到数组中(通过控制台检查并且长度值为0)。我没看到什么?

我只需要将用户选择的对象从storeItems数组传输到购物车项目,然后它将成功打印

//Function to add an item to users cart & update total
function addItem() {
  var addId = document.getElementById("addItemId").value;
  var itemQty = document.getElementById("addItemQty").value;

  for (x = 0; x < storeItems.length; x++) {
    //Calling validation functions
    validateId();
    validateQty();


    if (addId === storeItems[x].id) {
      cartItems.push(new CartItem(storeItems[x].id, storeItems[x].name, storeItems[x].price, storeItems[x].qty, storeItems[x].shippingCost));
      displayCart();
    }

  }

  console.log(cartItems);
}

我只需要将用户选择的对象从storeItems数组传输到购物车项目,然后它将成功打印

答案

在与值和文本输入进行比较时,请确保使用正确的比较运算符。无论type=""值设置为什么,文本输入都将以字符串形式返回。

因此,在将输入与实际数据进行比较时,请执行以下操作之一:

  • 使用==而不是===来忽略/跳过类型比较
  • 将输入值转换为应该的类型,然后您可以使用=== parseInt(myInput) === myNonInput new Date(myInput).getTime() === myNonInput.getTime() myInput === myNonInput.toString() 等等
另一答案

好的,我走了,我对你的代码做了一些修改,让它对我来说可行。

看看我的代码

var storeItems = [1,2,3,4,5,6]

function addItem(addId, itemQty) {
function addItem(addId, itemQty) {
  for (x = 0; x < storeItems.length; x++) {
    //Calling validation functions
    if (addId === storeItems[x]) {
      cartItems.push(x);
    }
  }
  console.log(cartItems);
}

addItem(6);

根据我的推论,亲爱的Watson,在您的代码中,如果条件不起作用

 if (addId === storeItems[x].id) {
     ....
    }

调试这个条件。这可能对你有所帮助!

以上是关于为什么我的对象没有被推入不同的数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何将对象推入数组?

JavaScript对象推入数组[重复]

javascript 对象被推入数组作为参考

将对象推入javascript深拷贝还是浅拷贝中的数组?

将对象推入向量的问题

mongoose.findByIdAndUpdate 只会保存被推入数组的对象的第一个键值