代码之家  ›  专栏  ›  技术社区  ›  random_user_0891

节点快速循环会话数据

  •  0
  • random_user_0891  · 技术社区  · 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 }
    

    我试过这个给我身份证 5c60c83e84555d391aaca89b

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

    当我尝试这个的时候,我没有得到任何输出。

             Array.from(sessionCart.products).forEach(function (child) {
                 console.log(child);
             });
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Jack Bashford    6 年前

    你可以改变你的 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));
        2
  •  0
  •   Justin Vos    6 年前

    问题的关键在于,您试图循环遍历对象的值,并提取每个对象的属性(数量)。

    你可以使用 Object.values() 以数组形式获取对象的值并循环。

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