diff --git a/lib/rules/prefer-destructuring.js b/lib/rules/prefer-destructuring.js
index <HASH>..<HASH> 100644
--- a/lib/rules/prefer-destructuring.js
+++ b/lib/rules/prefer-destructuring.js
@@ -109,8 +109,10 @@ module.exports = {
                 return;
             }
 
-            if (checkArrays && isArrayIndexAccess(rightNode)) {
-                report(reportNode, "array");
+            if (isArrayIndexAccess(rightNode)) {
+                if (checkArrays) {
+                    report(reportNode, "array");
+                }
                 return;
             }
 
diff --git a/tests/lib/rules/prefer-destructuring.js b/tests/lib/rules/prefer-destructuring.js
index <HASH>..<HASH> 100644
--- a/tests/lib/rules/prefer-destructuring.js
+++ b/tests/lib/rules/prefer-destructuring.js
@@ -72,6 +72,12 @@ ruleTester.run("prefer-destructuring", rule, {
         {
             code: "({ foo } = object);"
         },
+        {
+
+            // Fix #8654
+            code: "var foo = array[0];",
+            options: [{ array: false }, { enforceForRenamedProperties: true }]
+        },
         "[foo] = array;",
         "foo += array[0]",
         "foo += bar.foo"
Fix: Don't check object destructing in integer property (fixes #<I>) (#<I>)