Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zoubin/x-index-of
`indexOf` in the custom matching way
https://github.com/zoubin/x-index-of
Last synced: 8 days ago
JSON representation
`indexOf` in the custom matching way
- Host: GitHub
- URL: https://github.com/zoubin/x-index-of
- Owner: zoubin
- License: mit
- Created: 2015-10-01T14:44:10.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2015-10-05T05:36:26.000Z (about 9 years ago)
- Last Synced: 2024-10-13T11:22:09.264Z (about 1 month ago)
- Language: JavaScript
- Size: 141 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# x-index-of [![Build Status](https://travis-ci.org/zoubin/x-index-of.svg)](https://travis-ci.org/zoubin/x-index-of)
Look up indexes in a collection with custom compare function.- [Specify a searching range](#custom-range)
- [Filter the searching results](#custom-filter)
- [Specify a compare function](#custom-compare)## Usage
[![npm](https://nodei.co/npm/x-index-of.png)](https://www.npmjs.com/package/x-index-of)
### Custom range
Specify the searching range.```javascript
console.log(
// start = 0
indexOf([1, 2, 3, 2, 1], 2)
// 1
);console.log(
// start = 2
indexOf([1, 2, 3, 2, 1], 2, -3)
// 3
);console.log(
// start = 2, end = 3
indexOf([1, 2, 3, 2, 1], 2, {
start: 2,
end: 3,
})
// -1
);```
### Custom filter
Filter the results.```javascript
console.log(
// pick up the first match
indexOf([1, 2, 3, 2, 1], 2)
// 1
);console.log(
// pick up the second match
indexOf([1, 2, 3, 2, 1], 2, { filter: 1 })
// 3
);console.log(
// pick up the last match
indexOf([1, 2, 3, 2, 1], 2, { filter: -1 })
// 3
);console.log(
// pick up all matches
indexOf([1, 2, 3, 2, 1], 2, { filter: true })
// [1, 3]
);```
### Custom compare
Compare the custom way.```javascript
console.log(
// ===
indexOf([1, 2, 3, 2, 1], 2)
// 1
);console.log(
// ==
indexOf([1, '2', 3, 2, 1], 2, {
cmp: function (a, b) {
return a == b;
},
})
// 1
);console.log(
// <
indexOf([1, '2', 3, 2, '1'], 3, {
cmp: function (a, b) {
return a < b;
},
filter: true,
})
// [0, 1, 3, 4]
);```
## API
`indexOf(collection, needle, opts)`
### opts
#### start
Type: `Number`
Default: `0`
#### end
Type: `Number`
Default: `collection.length`
#### filter
Type: `Number`
Default: `0`
If `Number`, only one index will be retured.
If negative, it indexes the results from the end.If other than `Number`,
all matches will be returned.#### cmp
Type: `Function`
Signature: `cmp(val, needle)`
Default: `===`