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
|
'use strict';
module.exports = function array_slice(arr, offst, lgth, preserveKeys) {
// eslint-disable-line camelcase
// discuss at: http://locutus.io/php/array_slice/
// original by: Brett Zamir (http://brett-zamir.me)
// input by: Brett Zamir (http://brett-zamir.me)
// bugfixed by: Kevin van Zonneveld (http://kvz.io)
// note 1: Relies on is_int because !isNaN accepts floats
// example 1: array_slice(["a", "b", "c", "d", "e"], 2, -1)
// returns 1: [ 'c', 'd' ]
// example 2: array_slice(["a", "b", "c", "d", "e"], 2, -1, true)
// returns 2: {2: 'c', 3: 'd'}
var isInt = require('../var/is_int');
/*
if ('callee' in arr && 'length' in arr) {
arr = Array.prototype.slice.call(arr);
}
*/
var key = '';
if (Object.prototype.toString.call(arr) !== '[object Array]' || preserveKeys && offst !== 0) {
// Assoc. array as input or if required as output
var lgt = 0;
var newAssoc = {};
for (key in arr) {
lgt += 1;
newAssoc[key] = arr[key];
}
arr = newAssoc;
offst = offst < 0 ? lgt + offst : offst;
lgth = lgth === undefined ? lgt : lgth < 0 ? lgt + lgth - offst : lgth;
var assoc = {};
var start = false;
var it = -1;
var arrlgth = 0;
var noPkIdx = 0;
for (key in arr) {
++it;
if (arrlgth >= lgth) {
break;
}
if (it === offst) {
start = true;
}
if (!start) {
continue;
}++arrlgth;
if (isInt(key) && !preserveKeys) {
assoc[noPkIdx++] = arr[key];
} else {
assoc[key] = arr[key];
}
}
// Make as array-like object (though length will not be dynamic)
// assoc.length = arrlgth;
return assoc;
}
if (lgth === undefined) {
return arr.slice(offst);
} else if (lgth >= 0) {
return arr.slice(offst, offst + lgth);
} else {
return arr.slice(offst, lgth);
}
};
//# sourceMappingURL=array_slice.js.map
|