diff --git a/tests/y-array.tests.js b/tests/y-array.tests.js
index b59d96f8..b0a30a48 100644
--- a/tests/y-array.tests.js
+++ b/tests/y-array.tests.js
@@ -209,6 +209,22 @@ test('event target is set correctly (remote user)', async function array12 (t) {
   await compareUsers(t, users)
 })
 
+test('should correctly iterate an array containing types', async function iterate1 (t) {
+  const y = new Y.Y()
+  const arr = y.define('arr', Y.Array)
+  const numItems = 10
+  for(let i = 0; i < numItems; i++) {
+    const map = new Y.Map()
+    map.set('value', i)
+    arr.push([map])
+  }
+  let cnt = 0
+  for(let item of arr) {
+    t.assert(item.get('value') === cnt++, 'value is correct')
+  }
+  y.destroy()
+})
+
 var _uniqueNumber = 0
 function getUniqueNumber () {
   return _uniqueNumber++
diff --git a/types/YArray.js b/types/YArray.js
index 82dc2a3d..ae26584f 100644
--- a/types/YArray.js
+++ b/types/YArray.js
@@ -189,6 +189,7 @@ export class YArray extends Type {
         let content
         if (this._item instanceof Type) {
           content = this._item
+          this._item = this._item._right
         } else {
           content = this._item._content[this._itemElement++]
         }