This repository has been archived by the owner on Nov 8, 2019. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
75 lines (67 loc) · 2.24 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*!
* arr-includes <https://github.com/tunnckoCore/arr-includes>
*
* Copyright (c) Charlike Mike Reagent <@tunnckoCore> (https://i.am.charlike.online)
* Released under the MIT license.
*/
'use strict'
var arrayify = require('arrify')
/**
* > Check any of `values` exists on `arr`.
*
* **Example**
*
* ```js
* var arrIncludes = require('arr-includes')
*
* console.log(arrIncludes([1, 'bar', 55], 2)) // => false
* console.log(arrIncludes([1, 'bar', 3], 3)) // => 2
*
* console.log(arrIncludes([1, 'bar', 3, true], false)) // => false
* console.log(arrIncludes([1, 'bar', 44, true], true)) // => 3
*
* console.log(arrIncludes(['foo', 'bar'], 'baz')) // => false
* console.log(arrIncludes(['foo', 'bar'], 'foo')) // => true
* console.log(arrIncludes(['qux', 'foo', 'bar'], 'foo')) // => 1
* console.log(arrIncludes([true, 'qqq', 'bar'], true)) // => true
* console.log(arrIncludes(['true', 'qqq', 'bar'], true)) // => false
* console.log(arrIncludes(['qqq', 'bar', true], true)) // => 2
* console.log(arrIncludes(['qqq', 'true', 'bar'], true)) // => false
* console.log(arrIncludes([false, 'foo', null, 'bar'], null)) // => 2
*
* console.log(arrIncludes(['foo', 'bar', 'qux'], ['a', 'b', 'c'])) // => false
* console.log(arrIncludes(['b', 'a', 'c'], ['a', 'b', 'c'])) // => 1
* console.log(arrIncludes(['foo', 'bb', 'b'], ['a', 'b'])) // => 2
* console.log(arrIncludes(['foo', 'bar', 'qux'], ['a', 'b', 'foo'])) // => true
* console.log(arrIncludes(['bar', 123, 'foo', 'qux'], ['a', 'b', 'foo'])) // => 2
* ```
*
* @param {Array} `arr` array to check
* @param {Array|String} `values` array or string
* @return {Boolean|Number} returns `false` if not found, `true` if **index is 0**
* from the array, otherwise `number` index
* @api public
*/
module.exports = function arrIncludes (arr, values) {
if (!Array.isArray(values)) return inArray(arr, values)
var len = values.length
var i = -1
while (i++ < len) {
var j = inArray(arr, values[i])
if (j) {
return j
}
}
return false
}
function inArray (arr, val) {
arr = arrayify(arr)
var len = arr.length
var i = null
for (i = 0; i < len; i++) {
if (arr[i] === val) {
return i === 0 ? true : i
}
}
return false
}