utils-indexof

WebJar for utils-indexof

License

License

MIT
Categories

Categories

Dex General Purpose Libraries Utility
GroupId

GroupId

org.webjars.npm
ArtifactId

ArtifactId

utils-indexof
Last Version

Last Version

1.0.0
Release Date

Release Date

Type

Type

jar
Description

Description

utils-indexof
WebJar for utils-indexof
Project URL

Project URL

http://webjars.org
Source Code Management

Source Code Management

https://github.com/kgryte/utils-indexof

Download utils-indexof

How to add to project

<!-- https://jarcasting.com/artifacts/org.webjars.npm/utils-indexof/ -->
<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>utils-indexof</artifactId>
    <version>1.0.0</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.npm/utils-indexof/
implementation 'org.webjars.npm:utils-indexof:1.0.0'
// https://jarcasting.com/artifacts/org.webjars.npm/utils-indexof/
implementation ("org.webjars.npm:utils-indexof:1.0.0")
'org.webjars.npm:utils-indexof:jar:1.0.0'
<dependency org="org.webjars.npm" name="utils-indexof" rev="1.0.0">
  <artifact name="utils-indexof" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.npm', module='utils-indexof', version='1.0.0')
)
libraryDependencies += "org.webjars.npm" % "utils-indexof" % "1.0.0"
[org.webjars.npm/utils-indexof "1.0.0"]

Dependencies

compile (2)

Group / Artifact Type Version
org.webjars.npm : validate.io-array-like jar [1.0.1,2)
org.webjars.npm : validate.io-integer-primitive jar [1.0.0,2)

Project Modules

There are no modules declared in this project.

indexOf

NPM version Build Status Coverage Status Dependencies

Returns the first index at which a given element can be found.

Installation

$ npm install utils-indexof

Usage

var indexOf = require( 'utils-indexof' );

indexOf( arr, searchElement[, fromIndex] )

Returns the first index at which a given element can be found.

var arr = [ 4, 3, 2, 1 ];

var idx = indexOf( arr, 3 );
// returns 1

If a searchElement is not present in an input array, the function returns -1.

var arr = [ 4, 3, 2, 1 ];

var idx = indexOf( arr, 5 );
// returns -1

By default, the implementation searches an input array beginning from the first element. To start searching from a different element, specify a fromIndex.

var arr = [ 1, 2, 3, 4, 5, 2, 6 ];

var idx = indexOf( arr, 2, 3 );
// returns 5

If a fromIndex exceeds the input array length, the function returns -1.

var arr = [ 1, 2, 3, 4, 2, 5 ];

var idx = indexOf( arr, 2, 10 );
// returns -1

If a fromIndex is less than 0, the starting index is determined relative to the last index (with the last index being equivalent to fromIndex = -1).

var arr = [ 1, 2, 3, 4, 5, 2, 6, 2 ];

var idx = indexOf( arr, 2, -4 );
// returns 5

idx = indexOf( arr, 2, -1 );
// returns 7

If fromIndex is less than 0 and its absolute value exceeds the input array length, the function searches the entire input array.

var arr = [ 1, 2, 3, 4, 5, 2, 6 ];

var idx = indexOf( arr, 2, -10 );
// returns 1

The first argument is not limited to arrays, but may be any array-like object.

var str = 'bebop';

var idx = indexOf( str, 'o' );
// returns 3

Notes

  • Search is performed using strict equality comparison. Thus,

    var arr = [ 1, [1,2,3], 3 ];
    
    var idx = indexOf( arr, [1,2,3] );
    // returns -1
  • This implementation is not ECMAScript Standard compliant. Notably, the standard specifies that an array be searched by calling hasOwnProperty (thus, for most cases, incurring a performance penalty), and the standard does not accommodate a searchElement equal to NaN. In this implementation, the following is possible:

    // Locate the first element which is NaN...
    var arr = [ 1, NaN, 2, NaN ];
    
    var idx = indexOf( arr, NaN );
    // returns 1
    
    // Prototype properties may be searched as well...
    function Obj() {
    	this[ 0 ] = 'beep';
    	this[ 1 ] = 'boop';
    	this[ 2 ] = 'woot';
    	this[ 3 ] = 'bap';
    	this.length = 4;
    	return this;
    }
    Obj.prototype[ 2 ] = 'bop';
    
    var obj = new Obj();
    
    idx = indexOf( obj, 'bop' );
    // returns -1
    
    delete obj[ 2 ];
    
    idx = indexOf( obj, 'bop' );
    // returns 2

Examples

var indexOf = require( 'utils-indexof' );

var arr;
var obj;
var str;
var idx;
var i;

// Arrays...
arr = new Array( 10 );
for ( i = 0; i < arr.length; i++ ) {
	arr[ i ] = i * 10;
}
idx = indexOf( arr, 40 );

console.log( idx );
// returns 4


// Array-like objects...
obj = {
	'0': 'beep',
	'1': 'boop',
	'2': 'bap',
	'3': 'bop',
	'length': 4
};

idx = indexOf( obj, 'bap' );

console.log( idx );
// returns 2


// Strings...
str = 'beepboopbop';

idx = indexOf( str, 'o' );

console.log( idx );
// returns 5

To run the example code from the top-level application directory,

$ node ./examples/index.js

Tests

Unit

This repository uses tape for unit tests. To run the tests, execute the following command in the top-level application directory:

$ make test

All new feature development should have corresponding unit tests to validate correct functionality.

Test Coverage

This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:

$ make test-cov

Istanbul creates a ./reports/coverage directory. To access an HTML version of the report,

$ make view-cov

Browser Support

This repository uses Testling for browser testing. To run the tests in a (headless) local web browser, execute the following command in the top-level application directory:

$ make test-browsers

To view the tests in a local web browser,

$ make view-browser-tests

License

MIT license.

Copyright

Copyright © 2016. Athan Reines.

Versions

Version
1.0.0