Estoy usando la función jquery .each utilizando 2 selectores. Al empujar los valores a una matriz, los agrega como cada valor de selector como su propia entrada en la matriz.
en array(100,casement,200,glider)
lo que estoy tratando de hacer es agregarlos en un par de valores clave en una matriz como
array(100=>casement, 200=>glider)
¿Qué debo cambiar para que esto suceda?
<input name="windowNum"><input name="windowList"> <input name="windowNum"><input name="windowList"> <input name="windowNum"><input name="windowList"> <input name="windowNum"><input name="windowList"> <script> function getFields(){ $("input[name='windowNum'], input[name='windowList']").each(function() { var winList = $(this).val(); windowList.push(winList); //I want an array output like this from the 2 fields //windowList.push(input[name='windowNum'] : input[name='windowList']) }); } </script>Está trabajando en mi extremo. Intente probarlo en este fragmento de código. O probablemente no entendí el resultado esperado.
var windowList = {}; function getFields(){ $("input[name='windowNum']").each(function() { var key = $(this).val(); windowList[key] = $(this).next().val(); }); console.log(windowList); } <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input name="windowNum"><input name="windowList"><br> <input name="windowNum"><input name="windowList"><br> <input name="windowNum"><input name="windowList"><br> <input name="windowNum"><input name="windowList"> <button type="button" onclick="getFields()">Test</button>Usar map en lugar de each
let arr = [100, casement, 200, glider]; arr = arr.map((v, i) = > { if (i % 2 === 1 || !arr[i + 1]) return null; return `${v}=>${arr[i + 1]}`; }).filter(Boolean);Lo resolví. Aquí esta lo que hice.
$("input[name='windowNum'], input[name='windowList']").each(function() { var winList = $(this).val(); windowList_x.push(winList); }); for (let i = 0; i < windowList_x.length; i+=2) { var wNum = windowList_x[i]; var wName = windowList_x[i + 1]; windowList.push({number: wNum, window: wName}); }da salida
Array 0: Object { number: "101", window: "test a" } 1: Object { number: "102", window: "test b" } 2: Object { number: "103", window: "test c" } 3: Object { number: "104", window: "test d" } length: 4