Array.from()的使用方法~~~字符串变成数组、数组去重、伪数组变真数组、序列生成器

Array.from()静态方法从可迭代或类数组对象创建一个新的浅拷贝的数组实例。

语法

Array.from(arrayLike)

Array.from(arrayLike,mapFn)

Array.from(arrayLike,mapFn,thisArg)

参数

arrayLike:想要转换成数组的类数组(带有length属性和索引元素的对象)或可迭代对象(Map、Set对象)。

mapFn(元素,元素的索引)---(可选):调用数组每个元素的函数,每个将要添加到数组中的值首先会传递给该函数,然后将mapFn的返回值增加到数组中。

thisArg(可选):执行mapFn时用作this的值

返回值

一个新的数组实例

示例

1、字符串变成数组

console.log(Array.from('foo')) // ['f','o','o']

2、数组去重

console.log(Array.from(new Set(['foo','bar','banner','foo'])))
//['foo','bar','banner']

3、NodeList变成数组

 <div id="wrapper">
      <span class="span1">123</span>
      <span class="span2">123</span>
      <span class="span3">123</span>
      <span class="span4">123</span>
      <span class="span5">123</span>
 </div>
<script>
  const wrapper = document.getElementById("wrapper");
  const spans = wrapper.querySelectorAll("span");
  console.log(spans);
  console.log(
    Array.from(spans, (item, index) => {
      console.log(item.className, index);
      return item.className + "_" + index;
    })
  );
//NodeList(5) [span.span1, span.span2, span.span3, span.span4, span.span5]
//span1 0
//span2 1
//span3 2
//span4 3
//span5 4
//(5) ['span1_0', 'span2_1', 'span3_2', 'span4_3', 'span5_4']
</script>

4、类数组变成数组

 function f() {
    return Array.from(arguments);
  }
  console.log(f(1, 2, 3));
//(3) [1, 2, 3]

5、箭头函数和Array.from()

  console.log(Array.from([1, 2, 3], (x) => 2 * x));
  // (3) [2, 4, 6]

  console.log(
    Array.from({ length: 5 }, (item, i) => {
      console.log(item, i);
      return i;
    })
  );
  // undefined 0
  // undefined 1
  // undefined 2
  // undefined 3
  // undefined 4
  // (5) [0, 1, 2, 3, 4]

6、序列生成器

  function rang(start, stop, step) {
    return Array.from(
      { length: (stop - start) / step + 1 },
      (_, i) => start + i * step
    );
  }
  console.log(rang(0, 4, 1));
  // (5) [0, 1, 2, 3, 4]

  console.log(rang(2, 12, 2));
  // (6) [2, 4, 6, 8, 10, 12]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值