美文网首页
[分析]不用循环生成,创建一个长度为100的数组,并且每个元素的

[分析]不用循环生成,创建一个长度为100的数组,并且每个元素的

作者: Top_Chenxi | 来源:发表于2017-04-19 16:46 被阅读278次
    /*
        如何不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标
    */
    
    var myArray;
    
    myArray = null;
    // new Array(100)  生成的是稀疏数组 返回的不是数组,需要 Array.from转换
    /*
        创建空数组
        1.Array.from(new Array(100))
        2.Array.from({length:100}
        3.Array.apply(null,{length:100}
        4.[...Array(100)]
    */
    // 1
    myArray = Array.from(new Array(100));
    
    myArray = myArray.map(function(item, index) {
        return index;
    });
    
    // 2
    myArray = Array.apply(null, {
        length: 100
    });
    // Object.keys(),该方法返回一个数组传入对象,返回属性名
    // r如果传递数组,返回索引(下标)
    myArray = Object.keys(myArray);
    
    // 3
    // 通过Array Iterator
    myArray = Array.from(Array(100).keys());
    
    // 4 其实就是 先去掉 undefined 还是 方法1的思想
    myArray = Array(100).fill('naive').map(function(v, i) {
        return i;
    });
    
    // 5
    // new Int8Array(100) 是初始化都为 0 的数组 后面和方法2一样
    myArray = Object.keys(new Int8Array(100));
    // 上面返回的数组为string,要转成number
    myArray = myArray.map(Number);
    
    
    // 6 赌博法 页面至少要有100个字符
    myArray = document.body.innerHTML.substr(0, 100).split('').map(Object.call, Number);
    
    // 7
    myArray = ' '.repeat(100).split('').map(Object.call, Number);
    
    // 8 new Array(100).toString() 生成 一串,,,..,, 再分割 成数组
    myArray = new Array(100).toString().split(",");
    
    myArray = myArray.map(function(v, i) {
        return i;
    });
    
    // 9
    myArray = [...Array(100).keys()];
    
    // 10 递归
    function reduce(prev, curr) {
        if (curr >= 100) return prev;
        prev.push(curr);
        return reduce(prev, curr + 1);
    }
    
    myArray = reduce([], 0);
    
    

    相关文章

      网友评论

          本文标题:[分析]不用循环生成,创建一个长度为100的数组,并且每个元素的

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