Пользователь вводит несколько элементов в массив - PullRequest
0 голосов
/ 20 сентября 2019

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

var cutList = [ { qty: 36, feet: 28, inch: 3 },
            { qty: 6, feet: 27, inch: 8 },
            { qty: 12, feet: 27, inch: 3 },
            { qty: 6, feet: 25, inch: 8 },
            { qty: 16, feet: 25, inch: 3 },
            { qty: 22, feet: 22, inch: 8 },
            { qty: 12, feet: 12, inch: 3 }],
limit = 40,
used = 0,
result = cutList.reduce((r, { qty, feet, inch }, i) => {
    var rest, min;
    while (qty) {
        if (used === 0) r.push([]);
        min = Math.min(limit - used, qty)
        r[r.length - 1].push({ qty: min, feet, inch, limit });
        qty -= min;
        used += min;
        if (used === limit) used = 0;
    }
    return r;
}, []);

console.log(result);

, который выводит на консоль следующее:

Array [
Array [
  Object { qty: 36, feet: 28, inch: 3, limit: 40 },
  Object { qty: 4, feet: 27, inch: 8, limit: 40 }],
Array [
  Object { qty: 2, feet: 27, inch: 8, limit: 40 },
  Object { qty: 12, feet: 27, inch: 3, limit: 40 },
  Object { qty: 6, feet: 25, inch: 8, limit: 40 },
  Object { qty: 16, feet: 25, inch: 3, limit: 40 },
  Object { qty: 4, feet: 22, inch: 8, limit: 40 }],
Array [
  Object { qty: 18, feet: 22, inch: 8, limit: 40 },
  Object { qty: 12, feet: 12, inch: 3, limit: 40 },
  Object { qty: 10, feet: 10, inch: 6, limit: 40 }],
Array [
  Object { qty: 28, feet: 10, inch: 6, limit: 40 }]
 ]

У меня есть некоторый HTML-код для формы для ввода данных пользователем следующим образом:

<html>
<head>
<style>
  article, aside, figure, footer, header, hgroup, 
  menu, nav, section { display: block; }
</style>
</head>
<body>
  <form>
    <h1>Please enter data</h1>
    <input id="qty" type="number" placeholder="Quantity" />
    <input id="feet" type="number" placeholder="Feet" />
    <input id="inch" type="number" placeholder="Inches" />
    <input type="button" value="Add" onclick="insert()" />
    <input type="button" value="Calculate" onclick="calculate()" />
  </form>
  <div id="display"></div>
</body>
</html>

И еще немного javascript, пытающегося получить входные данные в массив cutList:

var qty  = [];
var feet   = [];
var inch = [];
var cutlist = [qty, feet, inch];

var qtyInput  = document.getElementById("qty");
var feetInput   = document.getElementById("feet");
var inchInput = document.getElementById("inch");

var messageBox  = document.getElementById("display");

function insert ( ) {
 qty.push( qtyInput.value );
 feet.push( feetInput.value );
 inch.push( inchInput.value );
}

Я хотел бы принять пользовательский ввод, это может быть 5 элементов (сКол-во, футы и дюймы) или это может быть 100, а затем вывести результаты этого первого бита кода, который сортирует их по группам по 40, чтобы пользователь мог распечатать отсортированный список.

Прошло много-много времени с тех пор, как я занимался программированием, и я новичок в JavaScript, поэтому будьте спокойны со мной.Любая помощь будет оценена.

...