自己实现一个简易版Array.from

本文详细介绍了Array.from方法的用途和用法,它用于从类似数组或可迭代对象创建新的数组实例。文章通过示例展示了如何使用Array.from,并提供了一个自定义实现的myArrayFrom函数进行验证,该函数接受参数并确保其为有效的数组或可迭代对象,然后可选地应用映射函数。通过这个例子,读者可以深入理解Array.from的工作原理。
摘要由CSDN通过智能技术生成

用途:

Array.from 方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。     ——MDN

详见Array.from()

使用语法:

Array.from(arrayLike[, mapFn[, thisArg]])

代码:

function myArrayFrom() {
   let arrayLike = arguments[0];
   // 判断第一个参数是不是空
   if (arrayLike == null) {
      throw new TypeError("Array.from requires an array-like object - not null or undefined");
   }
   let fn = arguments.lenght > 1 ? arguments[1] : undefined;
   // 判断第二个参数是不是函数
   if (fn && !(typeof fn === 'function')) {
      throw new TypeError('Array.from: when provided, the second argument must be a function');
   }
   let thisArg =  arguments.lenght > 2 ? arguments[2] : undefined;
   let len = arrayLike.length;
   let i = 0, value;
   let arr = new Array(len);
   while (i < len) {
      value = arrayLike[i];
      if (fn) {
         arr[i] = !thisArg ? fn(value, i) : fn.call(thisArg, value, i);
      } else {
         arr[i] = value;
      }
      i++;
   }
   return arr;
}

验证:

function mySum () {
   console.log(arguments);
   console.log(myArrayFrom(arguments));
}

mySum(1,2,3,4,42,4,24);
/*
[Arguments] {
  '0': 1,
  '1': 2,
  '2': 3,
  '3': 4,
  '4': 42,
  '5': 4,
  '6': 24
}
*/
/*
[
   1, 2,  3, 4,
  42, 4, 24
]
*/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值