Как создавать объект или array ассоциативно динамический в языке сценариев JavaScript?

Я пробегаю body таблицы и хочу захватить положение (td), где selects выбраны, это происходит в событии click . У меня есть следующее:

                //creo el objeto
                 var objetoSelects = new Object();
                 $('#vistaPre tbody tr').each(function (index) {
                    $(this).find("td").each(function(i, el) {
                        // .selectOptions son selects que tengo en un td de la tabla
                        $('.selectOptions').find(':selected').each(function(j, el) {
                            $this = $(this).val();
                            if ($this != '') {

                             // intento crear las posiciones del objeto

                             objetoSelects.$this = j;

                             objetoSelects.selects = $this;

                            }

                        });
                        // salgo del each
                        return false;
                    });
                    // salgo del each
                    return false;
                });

Мое намерение состоит в том, чтобы создавать объект таким образом:

// $this es el valor del select ejemplo ('item1')
// j es el contador en este caso la posición actual del 
// selects es el valor que le deseo dar a mi otro dato (creo que no esta bien)
objetoSelects(itemx = x, 'selects' = itemx);

Я не нахожу способ это делать.

UPDATE

Принимая во внимание ответы, я нашел способ это делать, далее я оставляю способ, в котором я решил проблему

                // cree arrays para guardar la posición del  y el valor del select
                var arraySelects  = [];
                var arrayPosition = [];

                $('#vistaPre tbody tr').each(function (index2) {
                    $(this).find("td").each(function(i, el) {
                        //
                        $('.selectOptions').find(':selected').each(function(j, el) {
                            $this = $(this).val();
                            if ($this != '') {

                                //agrego los datos correspondientes
                                arrayPosition.push(j);
                                arraySelects.push($this);

                            }

                        });
                        return false;
                    });
                    return false;
                });
                // creo el objeto y le asigno los valores
                var datoSelect = { 'position': arrayPosition, 'selects': arraySelects};

1
задан 16.06.2016, 01:39
3 ответа

Алан, я оставляю тебе здесь пример того, что ты ищешь. Рукописный шрифт JS nátivo без внешних Книжных магазинов.

//Aqui buscamos todos los TR de la tabla
var a = document.querySelectorAll("table tr");
var arreglo = [];
if(a != undefined || a!= null){
  for(var b in a){ //Como que Query Selector All nos entrega un array, entonces ieramos
    var c = a[b];
    if(typeof c == "object"){ //Solo ocupamos los objetos 
      var check = c.querySelector("td input[type='checkbox']:checked"); //ahora que tenemos los tr entonces buscamos dentro de ellos los checkbox que esten checked
      if(check.checked){ //Si estan checked entonces...
        //aqui agrega tu array como necesites
        arreglo.push({"fila":c.rowIndex,"celda":check.parentNode.cellIndex});
        
      //console.log("Fila: "+c.rowIndex,"celda: "+check.parentNode.cellIndex);
      }
    }
  }
}
console.log(arreglo);
<!--Te dejo un tabla para que puedas ejecutar el script, solo modifica a tus necesidades.-->
<table border="">
<tr>
  <td><input type="checkbox" id="a" name="a" checked="checked" /><label for="a">opcion</label></td>
  <td><input type="checkbox" id="b" name="b" /><label for="b">opcion</label></td>
  </tr>
  <tr>
  <td><input type="checkbox" id="c" name="c" /><label for="c">opcion</label></td>
  <td><input type="checkbox" id="d" name="d" checked="checked" /><label for="d">opcion</label></td>
  </tr>
  <tr>
  <td><input type="checkbox" id="e" name="e" checked="checked" /><label for="e">opcion</label></td>
  <td><input type="checkbox" id="f" name="f" /><label for="f">opcion</label></td>
  </tr>
</table>
1
ответ дан 24.11.2019, 14:08

Я не понимаю очень хорошо твой вопрос.

 var arraySelects = new Object();

ты создаешь objecto, но по имени я предполагаю, что ты хочешь array?

, если окончательно, если ты хочешь объект, тогда ты можешь делать:

arraySelects['clave'] = valor;

recordermos, что ты создал arraySelects как объект, после заканчивая этот названный, ты можешь консультировать arraySelects['key'] remplazando key по имени, которое ты дал ему, когда ты это сохранял.

1
ответ дан 24.11.2019, 14:08
  • 1
    Пошло, что был запутан, изначально был array, но исследовав, я понял, что в javascript называет ассоциативные array объектами, как это документируют здесь , большое спасибо из-за помощи я протестирую то, что ты говоришь мне – Alan 16.06.2016, 00:12

Ты можешь распределять стоимость прямо используя синтаксис, чтобы создавать объекты:

objetoSelects = {"items": x, "select": itemx}

1
ответ дан 24.11.2019, 14:08