一/* pop重构 */
function pop(arr) {
var elem = arr[arr.length - 1];
if (arr.length > 0);
arr.length--;
return elem;
}
二 /* push重构 */
function push(arr) {
for (var i = 1; i < arguments.length; i++) {
arr[arr.length] = arguments[i];
}
return arr.length;
}
var arr = [1, "ss", 2];
var len = push(arr, 4, "svv");
console.log(arr, len)
三/* shift重构 */
function shift(arr) {
var first = arr[0];
var len = arr.length;
for (var i = 0; i < arr.length - 1; i++) {
arr[i] = arr[i + 1];
}
if (arr.length > 0) arr.length = len - 1;
return first;
}
var arr = [5, 8, 7];
arr1 = shift(arr);
console.log(arr1, arr)
四 /* unshift重构 */
/* 方法1 */
function unshift(arr) {
var len = arguments.length - 1;
for (var i = arr.length - 1; i >= 0; i--) {
arr[i + len] = arr[i];
arr[i] = null;
}
for (var j = 0; j < len; j++) {
arr[j] = arguments[j + 1];
}
return arr.length;
}
/* 方法2 */
function unshift2(arr) {
var arr1 = [];
for (var i = 0; i < arr.length; i++) {
arr1[i] = arr[i];
}
arr.length = 0;
for (var j = 0; j < arguments.length - 1; j++) {
arr[j] = arguments[j + 1];
}
var len = arr.length;
for (var k = 0; k < arr1.length; k++) {
arr[len + k] = arr1[k];
}
return arr.length;
}
五 /* join重构 */
function join(arr, elem) {
if (elem === null) elem = String(elem);
if (elem === undefined) elem = ","
elem = String(elem);
var str = "";
for (var index in arr) {
if (index == arr.length - 1) {
str += arr[index];
} else {
str += arr[index] + elem;
}
}
return str;
}
var arr = [8, "aa", {
n: 1
}];
六、/*concat 重构 */
function concat(arr) {
var arr1 = [];
for (var i = 0; i < arr.length; i++) {
arr1[i] = arr[i];
}
if (arguments.length === 1) return arr1;
for (var j = 1; j < arguments.length; j++) {
if (arguments[j].constructor === Array && arguments[j] !== null) {
for (var k = 0; k < arguments[j].length; k++) {
arr1[arr1.length] = arguments[j][k];
}
} else {
arr1[arr1.length] = arguments[j];
}
}
return arr1;
}
七 /* splice重构 */
function splice(arr, start, len) {
var arr1 = [],
index;
len = len ? len : arr.length - start;
if (arguments.length < 4) {
if (start === undefined) return arr1;
if (start === 0) {
for (var i = 0; i < arr.length; i++) {
arr1[arr1.length] = arr[i];
}
return arr1;
}
if (start < 0) {
for (index = arr.length + start; index < arr.length + start + len; index++) {
arr1[arr1.length] = arr[index];
}
for (index = arr.length + start; index < arr.length - len; index++) {
arr[index] = arr[index + len];
}
arr.length -= len;
return arr1;
}
if (start > 0) {
for (index = start; index < start + len; index++) {
arr1[arr1.length] = arr[index];
}
for (index = start; index < arr.length - len; index++) {
arr[index] = arr[index + len];
}
arr.length -= len;
return arr1;
}
}
if (arguments.length > 3) {
var arr2 = [];
start = start > 0 ? start : arr.length + start;
if (arguments[3] === 0) {
for (var i = 0; i < start; i++) {
arr2[arr2.length] = arr[i]
}
for (var j = 3; j < arguments.length; j++) {
arr2[arr2.length] = arguments[j];
}
for (var k = start; k < arr.length; k++) {
arr2[arr2.length] = arr[k];
}
arr.length = 0;
for (var l = 0; l < arr2.length; l++) {
arr[l] = arr2[l];
}
return arr1;
} else {
for (index = start; index < start + len; index++) {
arr1[arr1.length] = arr[index];
}
for (index = start; index < arr.length - len; index++) {
arr[index] = arr[index + len];
}
arr.length -= len;
arr2 = [];
for (var i = 0; i < start; i++) {
arr2[arr2.length] = arr[i]
}
for (var j = 3; j < arguments.length; j++) {
arr2[arr2.length] = arguments[j];
}
for (var k = start; k < arr.length; k++) {
arr2[arr2.length] = arr[k];
}
arr.length = 0;
for (var l = 0; l < arr2.length; l++) {
arr[l] = arr2[l];
}
return arr1;
}
}
}
八 /* slice重构 */
function slice(arr, start, end) {
var arr1 = [];
if (start === undefined) start = 0;
if (end === undefined) end = arr.length;
start = Number(start);
end = Number(end);
if (!isNaN(end) && isNaN(start)) start = 0;
if (isNaN(start)) return [];
if (start < 0) start = arr.length + start;
if (end < 0) end = arr.length + end;
var arr1 = [];
for (var i = start; i < end; i++) {
arr1[i - start] = arr[i];
}
return arr1;
}
九/* forEach重构 */
function forEach(arr, fn) {
for (var i = 0; i < arr.length; i++) {
if (i in arr) fn(arr[i], i, arr);
}
}
forEach(arr, function(item, index, arr) {
console.log(item, index);
})
十 /* map重构 */
function map(arr, fn) {
var arr1 = [0];
for (var i = 0; i < arr.length; i++) {
if (i in arr) arr1[i] = fn(arr[i], i, arr);
}
return arr1;
}
十一/* indexOf重构 */
function indexOf(arr, elem, index) {
if (index === undefined) index = 0;
for (i = index; i < arr.length; i++) {
if (arr[i] === elem) return i;
}
return -1
}
十二 /* filter重构 */
function filter(arr, fn) {
var arr1 = [];
if (arr.length === 0) return arr1;
for (var i = 0; i < arr.length; i++) {
if (fn(arr[i], i, arr)) {
arr1.push(arr[i]);
}
}
return arr1;
}
十三/* reduce重构 */
function reduce(arr, fn, value) {
var index = 0;
if (value === undefined) {
value = arr[0];
index = 1;
}
for (; index < arr.length; index++) {
value = fn(value, arr[index], index, arr);
}
return value;
}
数组方法重构
猜你喜欢
转载自blog.csdn.net/weixin_45261642/article/details/107879278
今日推荐
周排行