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, 3 );
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
-
95
+ get = resolveGetter ( x ) ;
99
96
for ( i = fromIndex ; i >= 0 ; i -- ) {
100
- if ( searchElement === get ( data , 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 lastIndexOf ( x , searchElement , fromIndex ) {
137
- var obj ;
138
134
if ( hasMethod ( x , 'lastIndexOf' ) ) {
139
135
return x . lastIndexOf ( searchElement , fromIndex ) ;
140
136
}
@@ -146,9 +142,8 @@ function lastIndexOf( x, searchElement, fromIndex ) {
146
142
} else if ( fromIndex > x . length ) {
147
143
fromIndex = x . length - 1 ;
148
144
}
149
- obj = arraylike2object ( x ) ;
150
- if ( obj . accessorProtocol ) {
151
- return accessors ( obj , searchElement , fromIndex ) ;
145
+ if ( isAccessorArray ( x ) ) {
146
+ return accessors ( x , searchElement , fromIndex ) ;
152
147
}
153
148
return internal ( x , searchElement , fromIndex ) ;
154
149
}
0 commit comments