123456789101112131415161718 |
- 'use strict';
- var lengthOfArrayLike = require('../internals/length-of-array-like');
- var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
-
- var $RangeError = RangeError;
-
- // https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with
- // https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with
- module.exports = function (O, C, index, value) {
- var len = lengthOfArrayLike(O);
- var relativeIndex = toIntegerOrInfinity(index);
- var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;
- if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');
- var A = new C(len);
- var k = 0;
- for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];
- return A;
- };
|