如何遍历immutable.js对象/地图/列表

时间:2016-06-07 06:11:41

标签: javascript list dictionary immutable.js

我是immutable.js的新手,对于我的生活,我无法弄清楚如何使用' fromJS'来迭代结果表格的地图/列表。在我的状态对象上。

如何计算以下示例中的购物车总数? 购物车语法为:{productId:quantity,productId:quantity,productId .. etc

    const INITIAL_STATE = fromJS({
      products: [
        {id: 1, name:'spaghetti', price: 25.00},
        {id: 2, name:'gold', price: 20.00},
        {id: 3, name:'rake', price: 15.00},
        {id: 4, name:'car', price: 10.00},
        {id: 5, name:'falcon', price: 5.00}
      ],
      cart: {1: 4, 3: 7}
    })

如何在这里迭代不可变对象?这里提到的方法对于我的初级眼睛来说是详细的:https://facebook.github.io/immutable-js/docs/#/List/keys

我认为我找到了一个解决方案,但有点破解:

const total = () => {
 let total =0
 state.get('products')
   .filter( p => {
     return state.get('cart')
       .has(p.get('id').toString())
   })
   .map( p => {
     total += state.get('cart')
      .get(p.get('id').toString())
      * p.get('price')
   })
 return total
}

1 个答案:

答案 0 :(得分:3)

下面的内容会有效,但稍微有些麻烦。

const total = state.get('cart').reduce((total, quantity, id) => {
  const price = state.get('products').find(product => product.get('id') == id).get('price');
  total += price * quantity;
  return total;
}, 0);