Создать массив JS с динамическими значениями - PullRequest
0 голосов
/ 31 августа 2018

В настоящее время я создаю массив следующим образом:

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

Я должен умножить переменную c на текущую позицию в массиве + 1, а затем по модулю 256.

Есть ли лучший / меньший способ сделать это. Что-то с ES6?

Скажите, я хочу это с длиной массива 20?

Ответы [ 6 ]

0 голосов
/ 31 августа 2018
const createArray = (length, c) => {
  return [...Array(length).keys()].map(i => (i + 1) * c % 256)
}
0 голосов
/ 31 августа 2018

Используется карта 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)
0 голосов
/ 31 августа 2018

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) ))
0 голосов
/ 31 августа 2018

Вы можете сделать это без ES6:

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

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

    return arr;
}
0 голосов
/ 31 августа 2018

Вы можете использовать Array.from и создать массив с требуемой длиной и отобразить требуемые значения.

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

console.log(getArray(5, 266));
0 голосов
/ 31 августа 2018

Это то, что вам нужно?

const c = 32;

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

console.dir(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...