节点通过会话数据表达循环

时间:2019-02-22 03:49:06

标签: javascript arrays node.js object ecmascript-6

我在用户会话中有需要查询的数据(尚未保存到数据库)。我正在寻找以下3个项目的数量值,例如,我正在从1

检索数量的{ prod: [Object], price: 100, quantity: 1 }

如何遍历会话数据并检索数量?

{ products:
   { '5c60c83e84555d391aaca89b': { prod: [Object], price: 100, quantity: 1 },
     '5c60d6cd3351283d13a9f463': { prod: [Object], price: 150, quantity: 2 },
     '5c60da303351283d13a9f464': { prod: [Object], price:10, quantity: 2 } },
  cartQty: 5,
  cartTotal: 420 }

我已经尝试过这样做,这使我的ID像5c60c83e84555d391aaca89b

    var sp = sessionCart.products;
    for (var p in sp) {
        console.log(p);
    } 

尝试此操作一无所获

         Array.from(sessionCart.products).forEach(function (child) {
             console.log(child);
         });

2 个答案:

答案 0 :(得分:1)

您可以稍微更改for...in循环以显示quantity

var sessionCart = {
  products: {
    '5c60c83e84555d391aaca89b': {
      prod: [Object],
      price: 100,
      quantity: 1
    },
    '5c60d6cd3351283d13a9f463': {
      prod: [Object],
      price: 150,
      quantity: 2
    },
    '5c60da303351283d13a9f464': {
      prod: [Object],
      price: 10,
      quantity: 2
    }
  },
  cartQty: 5,
  cartTotal: 420
}

var sp = sessionCart.products;
for (var p in sp) {
  console.log(sp[p].quantity);
}

或者,在Object.values上使用迭代并按如下方式解构:

var sessionCart = {
  products: {
    '5c60c83e84555d391aaca89b': {
      prod: [Object],
      price: 100,
      quantity: 1
    },
    '5c60d6cd3351283d13a9f463': {
      prod: [Object],
      price: 150,
      quantity: 2
    },
    '5c60da303351283d13a9f464': {
      prod: [Object],
      price: 10,
      quantity: 2
    }
  },
  cartQty: 5,
  cartTotal: 420
};

Object.values(sessionCart.products).forEach(({ quantity }) => console.log(quantity));

答案 1 :(得分:0)

问题的症结在于您试图遍历对象的值并提取每个对象的属性(数量)。

您可以使用Object.values()来获取对象的值作为数组并循环遍历。

Object.values(sessionCart.products).forEach(function (product) {
  console.log(product.quantity)
})