Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.12.2019, 08:36
Интересующийся
Отправить личное сообщение для vandalv Посмотреть профиль Найти все сообщения от vandalv
 
Регистрация: 08.12.2019
Сообщений: 19

Работа с Массивами
Доброе утро! Помогите разобраться с такой задачей. Задача сделать 100 фактур. На данный момент сделал это. На данный момент нужно чтобы из массива в каждую фактуру добавлялись по 10 товаров далее для этих товаров из массивов должны добавляться стоимость, количество и т.п
function randomDate(date1, date2) {
  function randomValueBetween(min, max) {
    return Math.random() * (max - min) + min;
  }
  var date1 = date1 || '01-01-2017'
  var date2 = date2 || new Date().toLocaleDateString()
  date1 = new Date(date1).getTime()
  date2 = new Date(date2).getTime()
  if (date1 > date2) {
    return new Date(randomValueBetween(date2, date1)).toLocaleDateString()
  } else {
    return new Date(randomValueBetween(date1, date2)).toLocaleDateString()

  }
}

var fakturaN = [];

for (var i = 1; i <= 100; i++) {
  fakturaN.push(i);
}

var sellern = "Dogserf";
var sellernip = "2254913384";
var selleradr = "2592  Davis Place";
var sellerpost = "87918997";
var selleracc = "85090922712148335820";

var firmString="Justsurf,DietyElephant,MetaHound,CuteOx,SweetFrank,PonyMice,BoarsAndInu,KrazyRat,GlumCats,ManedPie,ZipperPuppy,AKCStew,FoxFlock,NerdyLion,SnipeSkull,KittenFur,SilentRabbit,Pupski,BearSide,Mouse17C";
var firms = firmString.split(",");
var repeated = [].concat(... new Array(100).fill(["Justsurf", "DietyElephant", "MetaHound","CuteOx","SweetFrank","PonyMice","BoarsAndInu","KrazyRat","GlumCats","ManedPie","ZipperPuppy","AKCStew","FoxFlock","NerdyLion","SnipeSkull","KittenFur","SilentRabbit","Pupski","BearSide","Mouse17C"]))


var adressString="3118  Palmer Road,4996  Watson Lane,504  Hawks Nest Lane,3432  Glory Road,157  Crosswind Drive,3063  New York Avenue,997  Jadewood Drive,1630  Mulberry Lane,1710  Jehovah Drive,409  Monroe Street,3538  Hickman Street,68  Powder House Road,2449  Eagle Drive,1143  Collins Avenue,2848  Snyder Avenue,3797  Willis Avenue,4008  Alexander Avenue,3406  Wines Lane,1610  Gorby Lane";
var adress = adressString.split(",");
var repeated1 = [].concat(... new Array(100).fill(["3118  Palmer Road", "4996  Watson Lane", "Hawks Nest Lane","3432  Glory Road","157  Crosswind Drive","3063  New York Avenue","997  Jadewood Drive","1630  Mulberry Lane","1710  Jehovah Drive","409  Monroe Street","3538  Hickman Street","68  Powder House Road","2449  Eagle Drive","1143  Collins Avenue","2848  Snyder Avenue","3797  Willis Avenue","4008  Alexander Avenue","3406  Wines Lane","1610  Gorby Lane","2449  Eagle Drive"]))

var postGen = function(len) {
var arr=new Array();
for (var j=0;j<len;j++){
arr.push(Math.floor(Math.random()*10));
}
return arr.join("");
};

var accountGen = function(len) {
var arr=new Array();
for (var j=0;j<len;j++){
arr.push(Math.floor(Math.random()*10));
}
return arr.join("");
};

var vegString=["Apple","Apricots","Avocado","Banana","Blackberries"];

var randomAnswer = vegString[Math.floor(Math.random() * vegString.length)];


var bases = [];
for (var i = 0; i < fakturaN.length; i++) 
{
  var base = new Object();
  base.pref = fakturaN[i];
  base.sellern = sellern;
  base.sellernip = sellernip;
  base.selleradr = selleradr;
  base.sellerpost = sellerpost;
  base.selleracc = selleracc;
  base.repeated = repeated[i];
  base.repeated1 = repeated1[i];
  base.account=accountGen(20);
  base.postal=postGen(8);
  base.fullname=randomAnswer;
  bases.push(base);
}

for (var k = 0; k < bases.length; k++) 
{
  console.log("№ FAKTURY  000" + bases[k].pref + "  " + " ---------------------------------------------------------------------------------------------------------- " + "  " + randomDate() + "\n" + "SELLER:     " + base.sellern + "  " + "NIP:  " + base.sellernip + "     " + "ADRESS:  " + base.selleradr + "     " + "ACCOUNT:  " + base.selleracc + "     " + "POSTAL:  " + base.sellerpost + "\n" + "CUSTOMER:  " + bases[k].repeated+ "   ADRESS:  " + bases[k].repeated1+"  ACCOUNT№  "+": "+bases[k].account+"    POSTAL  "+": "+ bases[k].postal+ "\n"+"Produkt "+k+1+": "+bases[k].fullname+ "\n"+"Produkt "+k+5+": "+bases[k].fullname);
 

}
Ответить с цитированием
  #2 (permalink)  
Старый 08.12.2019, 08:38
Интересующийся
Отправить личное сообщение для vandalv Посмотреть профиль Найти все сообщения от vandalv
 
Регистрация: 08.12.2019
Сообщений: 19

Все результаты просматриваются в консоли. Большего пока не нужно.
Ответить с цитированием
  #3 (permalink)  
Старый 08.12.2019, 10:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

vandalv,
function randomValueBetween(min, max) {
    return Math.random() * (max - min) + min;
}
function randomDate(date1 = '01-01-2017', date2 = new Date().toLocaleDateString()) {
  date1 = new Date(date1).getTime();
  date2 = new Date(date2).getTime();
  return new Date(randomValueBetween(date2, date1)).toLocaleDateString()
}
function getElem(arr)
{
  return arr[randomValueBetween(0, arr.length)|0]
}
var sellern = "Dogserf";
var sellernip = "2254913384";
var selleradr = "2592  Davis Place";
var sellerpost = "87918997";
var selleracc = "85090922712148335820";
var firmString="Justsurf,DietyElephant,MetaHound,CuteOx,SweetFrank,PonyMice,BoarsAndInu,KrazyRat,GlumCats,ManedPie,ZipperPuppy,AKCStew,FoxFlock,NerdyLion,SnipeSkull,KittenFur,SilentRabbit,Pupski,BearSide,Mouse17C";
var firms = firmString.split(",");
var adressString="3118  Palmer Road,4996  Watson Lane,504  Hawks Nest Lane,3432  Glory Road,157  Crosswind Drive,3063  New York Avenue,997  Jadewood Drive,1630  Mulberry Lane,1710  Jehovah Drive,409  Monroe Street,3538  Hickman Street,68  Powder House Road,2449  Eagle Drive,1143  Collins Avenue,2848  Snyder Avenue,3797  Willis Avenue,4008  Alexander Avenue,3406  Wines Lane,1610  Gorby Lane";
var adress = adressString.split(",");
var numGen = function(length) {
return Array.from({length}, _=> Math.floor(Math.random()*10)).join("");
};
var vegString=["Apple","Apricots","Avocado","Banana","Blackberries"];
var bases = [];
for (var i = 0; i < 100; )
{
  var base = new Object();
  base.pref = (++i).toString().padStart(5, "0");
  base.sellern = sellern;
  base.sellernip = sellernip;
  base.selleradr = selleradr;
  base.sellerpost = sellerpost;
  base.selleracc = selleracc;
  base.repeated = getElem(firms);
  base.repeated1 = getElem(adress);
  base.account=numGen(20);
  base.postal=numGen(8);
  base.produkt = Array.from({length : 10}, _ => `Produkt ${randomValueBetween(100, 999)|0} ${getElem(vegString)} ${randomValueBetween(1, 100).toFixed(2)}$ ${randomValueBetween(1, 100)|0}p.`).join('\n')
  bases.push(base);
}
for (var k = 0; k < bases.length; k++)
{
  console.log("№ FAKTURY  " + bases[k].pref + "  " + " ---------------------------------------------------------------------------------------------------------- " + "  " + randomDate() + "\n" + "SELLER:     " + bases[k].sellern + "  " + "NIP:  " + bases[k].sellernip + "     " + "ADRESS:  " + bases[k].selleradr + "     " + "ACCOUNT:  " + bases[k].selleracc + "     " + "POSTAL:  " + bases[k].sellerpost + "\n" + "CUSTOMER:  " + bases[k].repeated+ "   ADRESS:  " + bases[k].repeated1+"  ACCOUNT№  "+": "+bases[k].account+"    POSTAL  "+": "+ bases[k].postal+ "\n"+bases[k].produkt);
}
Ответить с цитированием
  #4 (permalink)  
Старый 08.12.2019, 20:46
Интересующийся
Отправить личное сообщение для vandalv Посмотреть профиль Найти все сообщения от vandalv
 
Регистрация: 08.12.2019
Сообщений: 19

Спасибо за код! Это по сути первая лаба. Я сделал по сути как смог. Единственный еще вопрос хотел уточнить. У нас задается цена и количество случайным образом. Если захотим написать общую стоимость цена*количество товара. Каким образом это будет выглядеть?
Ответить с цитированием
  #5 (permalink)  
Старый 08.12.2019, 21:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

vandalv,
строку 40 заменить на
base.total = 0;
  base.produkt = Array.from({length : 10}, _ => {
  var num = randomValueBetween(100, 999)|0,
      name = getElem(vegString),
      price = randomValueBetween(1, 100).toFixed(2),
      count = randomValueBetween(1, 100)|0;
      base.total += price * count;
      return `${num} ${name} ${price}$ ${count}p.`
  }).join('\n') + `\ntotal: ${base.total.toFixed(2)}$` ;

Последний раз редактировалось рони, 08.12.2019 в 21:49.
Ответить с цитированием
  #6 (permalink)  
Старый 08.12.2019, 21:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

vandalv,
пост #5, код выше исправлен.
Ответить с цитированием
  #7 (permalink)  
Старый 08.12.2019, 21:54
Интересующийся
Отправить личное сообщение для vandalv Посмотреть профиль Найти все сообщения от vandalv
 
Регистрация: 08.12.2019
Сообщений: 19

Спасибо огромное! А есть ли какой-то аналог для randomValueBetween, чтобы значение бралось случайно из 3-х фиксированных значений? Как пример - это мы получаем цену брутто, для цены нетто в уравнении будет учавствовать ставка налога добавленная к цене. (23, 9, 5) соответственно.
Ответить с цитированием
  #8 (permalink)  
Старый 08.12.2019, 21:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от vandalv
чтобы значение бралось случайно из 3-х фиксированных значений?

Сообщение от рони
function getElem(arr)
Ответить с цитированием
  #9 (permalink)  
Старый 08.12.2019, 21:58
Интересующийся
Отправить личное сообщение для vandalv Посмотреть профиль Найти все сообщения от vandalv
 
Регистрация: 08.12.2019
Сообщений: 19

Ответить с цитированием
  #10 (permalink)  
Старый 08.12.2019, 23:14
Интересующийся
Отправить личное сообщение для vandalv Посмотреть профиль Найти все сообщения от vandalv
 
Регистрация: 08.12.2019
Сообщений: 19

Еще хотел уточнить, каким способом может проводиться сортировка такого рода фактур. Пример:
1) 30 фактур по найбольшей стоимости продажи отсортированных относительно даты.
2) Сортировка из заданного периода по стоимости продажи
3) Все фактуры в которых есть определенный продукт.
Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивами Gerd199 Общие вопросы Javascript 41 05.04.2018 23:36
Работа с массивами, help! tvv90 Общие вопросы Javascript 11 02.02.2016 10:34
Работа с массивами BorisBritva jQuery 6 23.02.2014 18:31
Работа с массивами. Требуется помощь. Кристи Общие вопросы Javascript 3 08.02.2011 18:00
работа с массивами one-two Работа 11 31.01.2011 16:30