美文网首页
解锁js数组新姿势

解锁js数组新姿势

作者: 7天苹果 | 来源:发表于2017-07-21 16:11 被阅读54次

    如何不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标?

    Object.keys(Array.from({length:100}))
    

    效果:

    创建数组
    Object.keys()

    参数是一个对象,返回一个数组,该数组的成员是对象自身的(而不是继承的)所有属性名。

    Example:

    var o = {
      p1: 123,
      p2: 456
    };
    
    Object.keys(o); /*["p1","p2"]*/
    
    Array.from()

    Array.from()可以将各种值转为真正的数组,并且还提供map功能。这实际上意味着,只要有一个原始的数据结构,你就可以先对它的值进行处理,然后转成规范的数组结构,进而就可以使用数量众多的数组方法。

    Array.from({ length: 2 }, () => 'jack') // ['jack', 'jack']
    

    上面代码中,Array.from的第一个参数指定了第二个参数运行的次数。这种特性可以让该方法的用法变得非常灵活。

    所以如果我们只是写成

    Array.from({length:100});
    

    效果会是这样:

    所以我们就可以知道Object.keys(Array.from({length:100}))是如何实现返回一个创建一个长度为100的数组,并且每个元素的值等于它的下标的数组的:

    • 使用Array.from()方法返回一个新的长度为100但元素为undefined的数组。
    • 使用Object.keys()返回数组中各元素下标

    改进版:

    Array.from(Array(100).keys()) 
    

    使用ES5:

    Object.keys(Array.apply(null,{length:100}));
    

    相关文章

      网友评论

          本文标题:解锁js数组新姿势

          本文链接:https://www.haomeiwen.com/subject/qorekxtx.html