Show More
Commit Description:
temporary for logo voting
Commit Description:
temporary for logo voting
References:
File last commit:
Show/Diff file:
Action:
node_modules/es5-ext/array/#/slice/shim.js
| 36 lines
| 1.0 KiB
| application/javascript
| JavascriptLexer
|
r789 | "use strict"; | |||
var toInteger = require("../../../number/to-integer") | ||||
, toPosInt = require("../../../number/to-pos-integer") | ||||
, isPlainArray = require("../../is-plain-array") | ||||
, isArray = Array.isArray | ||||
, slice = Array.prototype.slice | ||||
, objHasOwnProperty = Object.prototype.hasOwnProperty | ||||
, max = Math.max; | ||||
module.exports = function (start, end) { | ||||
var length, result, i; | ||||
if (!this || !isArray(this) || isPlainArray(this)) { | ||||
return slice.apply(this, arguments); | ||||
} | ||||
length = toPosInt(this.length); | ||||
start = toInteger(start); | ||||
if (start < 0) start = max(length + start, 0); | ||||
else if (start > length) start = length; | ||||
if (end === undefined) { | ||||
end = length; | ||||
} else { | ||||
end = toInteger(end); | ||||
if (end < 0) end = max(length + end, 0); | ||||
else if (end > length) end = length; | ||||
} | ||||
if (start > end) start = end; | ||||
result = new this.constructor(end - start); | ||||
i = 0; | ||||
while (start !== end) { | ||||
if (objHasOwnProperty.call(this, start)) result[i] = this[start]; | ||||
++i; | ||||
++start; | ||||
} | ||||
return result; | ||||
}; | ||||