title: Multiple immutable changes on state arrays
body: <p>I have the following <code>currentState</code>. When i add the recipient, the new recipient should be appended to recipient.allIds and recipientProduct with default qty = 1. I am stuck at appending to the <code>recipientProduct</code> part. This should be done in <code>immutable way</code> as it is a redux state.</p>
  
  <pre><code>let currentState = {
    product: {
      allIds: ['1', '5'],
    },
    recipient: {
      allIds: ['1'],
    },
    recipientProduct: [{
          recipientId: '1',
          productId: '1',
          qty: '3'
      }, {
          recipientId: '1',
          productId: '5',
          qty: '3'
      }],
  };
  </code></pre>
  
  <p>When I append a new recipient:</p>
  
  <pre><code>addRecipient = (recipientId) =&gt; {
      // when recipientId = 2
      // note quantity is always default to 1
  
      -&gt; append productIds to product.allIds if not exists
      -&gt; loop through all product from product.allIds
           loop through all recipient from recipient.allIds
           if (recipientId === recipientId &amp;&amp; productId === productId) {
                remain
            } else {
              // append with default qty 1
          }
  
  }
  </code></pre>
  
  <p>This will be the <code>newState</code>:</p>
  
  <pre><code>newstate = {
      product: {
          allIds: ['1', '5'],
      },
      recipient: {
          allIds: ['1', '2'],
      },
      recipientProduct: [{
          recipientId: '1',
          productId: '1',
          qty: '3'
      }, {
          recipientId: '1',
          productId: '5',
          qty: '3'
      },{
          recipientId: '2',
          productId: '1',
          qty: '1'
      }, {
          recipientId: '2',
          productId: '5',
          qty: '1'
      }],
  }
  </code></pre>