08.12.2019, 08:36
|
Интересующийся
|
|
Регистрация: 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);
}
|
|
08.12.2019, 08:38
|
Интересующийся
|
|
Регистрация: 08.12.2019
Сообщений: 19
|
|
Все результаты просматриваются в консоли. Большего пока не нужно.
|
|
08.12.2019, 10:03
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
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);
}
|
|
08.12.2019, 20:46
|
Интересующийся
|
|
Регистрация: 08.12.2019
Сообщений: 19
|
|
Спасибо за код! Это по сути первая лаба. Я сделал по сути как смог. Единственный еще вопрос хотел уточнить. У нас задается цена и количество случайным образом. Если захотим написать общую стоимость цена*количество товара. Каким образом это будет выглядеть?
|
|
08.12.2019, 21:33
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
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.
|
|
08.12.2019, 21:51
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
vandalv,
пост #5, код выше исправлен.
|
|
08.12.2019, 21:54
|
Интересующийся
|
|
Регистрация: 08.12.2019
Сообщений: 19
|
|
Спасибо огромное! А есть ли какой-то аналог для randomValueBetween, чтобы значение бралось случайно из 3-х фиксированных значений? Как пример - это мы получаем цену брутто, для цены нетто в уравнении будет учавствовать ставка налога добавленная к цене. (23, 9, 5) соответственно.
|
|
08.12.2019, 21:56
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от vandalv
|
чтобы значение бралось случайно из 3-х фиксированных значений?
|
Сообщение от рони
|
function getElem(arr)
|
|
|
08.12.2019, 21:58
|
Интересующийся
|
|
Регистрация: 08.12.2019
Сообщений: 19
|
|
|
|
08.12.2019, 23:14
|
Интересующийся
|
|
Регистрация: 08.12.2019
Сообщений: 19
|
|
Еще хотел уточнить, каким способом может проводиться сортировка такого рода фактур. Пример:
1) 30 фактур по найбольшей стоимости продажи отсортированных относительно даты.
2) Сортировка из заданного периода по стоимости продажи
3) Все фактуры в которых есть определенный продукт.
Спасибо!
|
|
|
|