代码之家  ›  专栏  ›  技术社区  ›  Gaterde

使用动态值创建JS数组

  •  0
  • Gaterde  · 技术社区  · 6 年前

    目前,我创建的数组如下:

    [c%256,2*c%256,3*c%256,4*c%256]
    

    c

    有没有更好的/更小的方法来做到这一点。ES6有什么问题吗?

    6 回复  |  直到 6 年前
        1
  •  3
  •   Federico Roma    6 年前
    const createArray = (length, c) => {
      return [...Array(length).keys()].map(i => (i + 1) * c % 256)
    }
    
        2
  •  3
  •   Nina Scholz    6 年前

    Array.from

    function getArray(length, c) {
        var f = c % 256;
        return Array.from({ length }, (_, i) => f * (i + 1));
    }
    
    console.log(getArray(5, 266));
        3
  •  1
  •   Steven Spungin    6 年前

    这使用ES6地图。它避免了循环或数组声明。数组从一开始就被分配了正确的大小(不推送/调整大小)。

    //[c%256,2*c%256,3*c%256,4*c%256]
    
    const c = 12
    const count = 100
    
    const items = Array(count).fill().map((_, i) => ((i + 1) * c) % 256)
    
    console.log(items)
        4
  •  0
  •   Learner    6 年前

    var c = 5;
    var arr = Array.apply(null, Array(20))
    var output = arr.map( (v,i) => (c*(i+1)%256) )
    console.log(output)
    
    // single line
    var c = 8
    console.log(Array.apply(null, Array(20)).map( (v,i) => (c*(i+1)%256) ))
        5
  •  0
  •   OliverRadini    6 年前

    这是你需要的吗?

    const c = 32;
    
    const result = Array(20).fill().map((x,i) => (c * i+1) % 256);
    
    console.dir(result);
        6
  •  -2
  •   JanS Aymeric Brudey    6 年前

    您可以在没有ES6的情况下执行此操作:

    function createArray(variable, length) {
        var arr = [];
    
        for(var i = 0; i < length; i++) {
            arr.push((i+1) * variable % 256);
        }
    
        return arr;
    }