x-index-of

Look up indexes in a collection with custom compare function.

Usage no npm install needed!

<script type="module">
  import xIndexOf from 'https://cdn.skypack.dev/x-index-of';
</script>

README

x-index-of Build Status

Look up indexes in a collection with custom compare function.

Usage

var indexOf = require('x-index-of');

Custom range

Specify the searching range.

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.

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.

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: ===