20
20
21
21
// MODULES //
22
22
23
- var arraylike2object = require ( '@stdlib/array/base/arraylike2object' ) ;
23
+ var isAccessorArray = require ( '@stdlib/assert/is-accessor-array' ) ;
24
+ var resolveGetter = require ( '@stdlib/array/base/resolve-getter' ) ;
24
25
25
26
26
27
// FUNCTIONS //
@@ -81,23 +82,19 @@ function internal( x, searchElement, fromIndex ) {
81
82
*
82
83
* @example
83
84
* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );
84
- * var arraylike2object = require( '@stdlib/array/base/arraylike2object' );
85
85
*
86
- * var x = arraylike2object( toAccessorArray( [ 1, 2, 3, 4 ] ) );
86
+ * var x = toAccessorArray( [ 1, 2, 3, 4 ] );
87
87
*
88
88
* var idx = accessors( x, 2, 0 );
89
89
* // returns 1
90
90
*/
91
91
function accessors ( x , searchElement , fromIndex ) {
92
- var data ;
93
92
var get ;
94
93
var i ;
95
94
96
- data = x . data ;
97
- get = x . accessors [ 0 ] ;
98
-
99
- for ( i = fromIndex ; i < data . length ; i ++ ) {
100
- if ( searchElement === get ( data , i ) ) {
95
+ get = resolveGetter ( x ) ;
96
+ for ( i = fromIndex ; i < x . length ; i ++ ) {
97
+ if ( searchElement === get ( x , i ) ) {
101
98
return i ;
102
99
}
103
100
}
@@ -134,7 +131,6 @@ function accessors( x, searchElement, fromIndex ) {
134
131
* // returns 1
135
132
*/
136
133
function indexOf ( x , searchElement , fromIndex ) {
137
- var obj ;
138
134
if ( hasMethod ( x , 'indexOf' ) ) {
139
135
return x . indexOf ( searchElement , fromIndex ) ;
140
136
}
@@ -144,9 +140,8 @@ function indexOf( x, searchElement, fromIndex ) {
144
140
fromIndex = 0 ;
145
141
}
146
142
}
147
- obj = arraylike2object ( x ) ;
148
- if ( obj . accessorProtocol ) {
149
- return accessors ( obj , searchElement , fromIndex ) ;
143
+ if ( isAccessorArray ( x ) ) {
144
+ return accessors ( x , searchElement , fromIndex ) ;
150
145
}
151
146
return internal ( x , searchElement , fromIndex ) ;
152
147
}
0 commit comments