使用动态值创建JS数组

时间:2018-08-31 08:57:57

标签: javascript arrays ecmascript-6

当前,我创建一个像这样的数组:

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

我必须将变量c与数组中的当前位置+ 1乘以256,然后取模。

是否有更好/更小方法来做到这一点。 ES6有什么用吗?

说我想要的数组长度为20?

6 个答案:

答案 0 :(得分:3)

您可以使用Array.from并生成具有所需长度的数组并映射所需值。

function getArray(length, c) {
    var f = c % 256;
    return Array.from({ length }, (_, i) => f * (i + 1));
}

console.log(getArray(5, 266));

答案 1 :(得分:3)

const createArray = (length, c) => {
  return [...Array(length).keys()].map(i => (i + 1) * c % 256)
}

答案 2 :(得分:1)

这使用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)

答案 3 :(得分:0)

这是您需要的吗?

const c = 32;

const result = Array(20).fill().map((x,i) => (c * i+1) % 256);

console.dir(result);

答案 4 :(得分:0)

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 :(得分:-2)

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

function createArray(variable, length) {
    var arr = [];

    for(var i = 0; i < length; i++) {
        arr.push((i+1) * variable % 256);
    }

    return arr;
}