Создать массив JS с динамическими значениями

В настоящее время я создаю такой массив:

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

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

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

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

Подумал об этом. Но нет, мне сначала нужно вычислить c * n, а затем% 256

Gaterde 31.08.2018 11:21
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
210
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Это то, что тебе надо?

const c = 32;

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

console.dir(result);

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

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

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

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

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

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

    return arr;
}

Вы может делаете это без es6, но вопрос действительно требует чего-то лучшего / меньшего

OliverRadini 31.08.2018 11:03

что-то лучше / меньше чего? Вопрос непонятен по этому поводу и не приводит пример. Формулировка вопроса предполагает, что спрашивающий вообще не знает, как это делать.

JanS 31.08.2018 11:04

Думаю, я иначе истолковал вопрос; у пользователя уже есть способ создания массива а, они спрашивают: «Есть ли способ лучше / меньше. Что-нибудь с ES6?»

OliverRadini 31.08.2018 11:17

Затем он должен был опубликовать свой код, который следует оптимизировать.

JanS 31.08.2018 11:26

Был предоставлен код: [c%256,2*c%256,3*c%256,4*c%256]

OliverRadini 31.08.2018 12:45

Да, и вопрос был Is there a better / smaller way to do that. Something with ES6?.. Это не говорит о том, что решение обязательно должно использовать ES6. Я ответил на вопрос, есть ли способ лучше, и сказал, что ему для этого не нужен ES6.

JanS 31.08.2018 12:50

var c = 5;
var arr = Array.apply(null, Array(20))
var output = arr.map( (v,i) => (c*(i+1)%256) )
console.info(output)

// single line
var c = 8
console.info(Array.apply(null, Array(20)).map( (v,i) => (c*(i+1)%256) ))

Это использует карту 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.info(items)
Ответ принят как подходящий
const createArray = (length, c) => {
  return [...Array(length).keys()].map(i => (i + 1) * c % 256)
}

Другие вопросы по теме