Могу ли я создать объект, в котором значение свойства является случайно сгенерированным числом? - PullRequest
0 голосов
/ 01 февраля 2019

Я хочу создать массив объектов, и в каждом объекте я хочу, чтобы ключ был элементом, а значение было случайным образом сгенерированным числом, как я могу это сделать?

Ответы [ 6 ]

0 голосов
/ 01 февраля 2019

Ниже приведен пример кода, в котором вы можете заказать случайные данные с завода, просто указав, сколько элементов вы хотите:

const data = new RandomDataFactory('car', 50)

при необходимости вы можете дополнительно изменить случайную функцию, чтобы каждый случайный выбор данныхпри обращении к нему

const random = function () {

return Math.random() * 300

}

нормальный элемент из массива будет возвращать случайные данные каждый раз

data[0].speed() === data[0].speed() // false

и не будет равен.

class DataGenerator {
  constructor(name, count) {
    this.name = name
    const result = []

    for (let i = 0; i < count; i++) {
      const name = `${this.name}-${i}`
      const random = Math.random() * 300

      result.push({
        item: name,
        speed: random
      })
    }

    return result
  }
}

const data = new DataGenerator('car', 50)
console.log('random: data', data)
0 голосов
/ 01 февраля 2019

Вы можете создать переменную, например amount, которая указывает, сколько объектов вы хотели бы иметь.

Затем используйте цикл for для добавления вашего объекта на основе amount указанного вами времени.

Чтобы добавить объект в массив, вы можете использовать arrayName.push().

Чтобы получить случайное число, вы можете использовать Math.random() * 100.Здесь 10 - максимальное число, которое вы можете получить как случайное число.Если вы хотите, чтобы эти числа были целыми числами, вы можете использовать ~~(Math.random() * 100)

См. Рабочий пример ниже:

const amount = 3, // The amount of items you want in your array
objects = []; // The array to hold all your objects
for(let i = 0; i < amount; i++) {
  objects.push({
    item: Math.random() * 100 // Get a random number between 0 and 10
  }) // adding the object to the objects array
}

console.log(objects); // log the output
0 голосов
/ 01 февраля 2019

Вот один из способов, которым вы можете создать генератор случайных чисел в JavaScript (если кодируете в ES6 или новее).Приведенный ниже подход использует преимущества функций генератора . итератор возвращается при вызове функции генератора.Затем вы можете вызвать next() на итераторе, чтобы получить следующее значение yield, отредактированное генератором.Объект, возвращаемый при вызове it.next(), будет иметь два свойства, done и value.

Поскольку значение yield sa генератора при каждом вызове (из-за бесконечного цикла while(true) внутри функции генератора), свойство done никогда не станет true - это означает, что вы можете сохранитьзвоните it.next() чтобы получить случайные числа навсегда.

init();

function init() {
  const rands = [];
  const it = randomNumberGenerator(100);
  let i = 0;
  document.querySelector('#random').addEventListener('click', e => {
    rands.push({
      id: i,
      value: it.next().value
    });
    i += 1;
    log(rands);
  });
}

function* randomNumberGenerator(max) {
  while (true) {
    yield Math.floor(Math.random() * Math.floor(max));
  }
}

function log(o) {
  console.clear();
  console.log(o);
}
<input id="random" type="button" value="Add random number object to array" />
0 голосов
/ 01 февраля 2019

const items = ["item1","item2","item3","item4","item5"];
const arr = items.map(item => {
    //this object will be returned
	let resultObj = {};
    //set the item as key and random number as its value
	resultObj[item] = Math.floor(Math.random() * 1000);
	return resultObj;
})
console.log(arr);
0 голосов
/ 01 февраля 2019

Попробуйте, внутри цикла for он создает элементы и присваивает им случайные значения

var a=[];
for(let i=0;i<5;i++)
{
var obj={};
obj.item="item"+i;
obj.value=Math.random()*9;
a.push(obj);
obj={};
}
console.log(a)
0 голосов
/ 01 февраля 2019

Да, попробуйте:

    var arr = [];
    for (var i = 0; i < 5; i++) arr.push({item: 'item_'+parseInt(Math.random() * 100)});
    console.log(arr);
...