Как связать 2 input массива по индексу?

Рейтинг: 0Ответов: 1Опубликовано: 15.03.2023

Подскажите пожалуйста как связать price и amount массива по индексу?

Нужно сложить в отдельные контейнеры и очень важно чтобы все совпадало.

Пока только такое получилось сделать, но непойму как связать amount, не думаю что это надежный вариант

let items = [];
let newitems = [];

$('input[name^="price"]').map(function(id, elem) {
  items.push({
    amount: 0, // ?
    price: $(this).val(),
  });
});

$('input[name^="newprice"]').map(function(id, elem) {
  newitems.push({
    amount: 0, // ?
    price: $(this).val(),
  });
});

console.log(items);
console.log(newitems);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="number" name="price[0]" value="1000">
<input type="number" name="price[1]" value="2000">
<input type="number" name="price[2]" value="4000">
<br>
<input type="number" name="amount[0]" value="5">
<input type="number" name="amount[1]" value="12">
<input type="number" name="amount[2]" value="7">

<input type="number" name="newprice[3]" value="1200">
<input type="number" name="newprice[4]" value="7000">
<br>
<input type="number" name="newamount[3]" value="4">
<input type="number" name="newamount[4]" value="48">

Ответы

▲ 0

в цикле перебираем input[name^="price"] и на каждой итерации вписываем значение из input[name^="amount"] с таким же индексом.

$('input[name^="price"]').forEach((el, idx) => {
  items.push({
    amount: $('input[name^="amount"]')[idx].val(),
    price: $(this).val(),
  });
});