当前,我创建一个像这样的数组:
[c%256,2*c%256,3*c%256,4*c%256]
我必须将变量c
与数组中的当前位置+ 1乘以256,然后取模。
是否有更好/更小方法来做到这一点。 ES6有什么用吗?
说我想要的数组长度为20?
答案 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;
}