How to get content from javascript / jquery array?

0

Good afternoon guys from Stack Overflow.

I'm having a hard time getting content from a specific array in javascript.

In the first few lines of javascript code it looks like this. Loose

var arrayIDs = [];

After a while, it runs the following code

$(".form-group").find('*').each(function() {

    var id = $(this).attr("id");
    if ($("#" + id).val() > 0) {
        if ($("#" + id).data("id-produto-item") != undefined) {
     arrayIDs.push({
         id_produto_itens: $("#" + id).data("id-produto-item"),
         id_proposta: numeroProposta
     });
   }
}
});

After the data is filled, I eventually need to manipulate them.

When I give a console.log in arrayIDs, this appears to me:

*→ []
→ 0: {id_produto_itens: 150, id_proposta: "123"}
→ 1 : {id_produto_itens: 160, id_proposta: "123"}
→ 2: {id_produto_itens: 176, id_proposta: "123"}
→ 3: {id_produto_itens: 175, id_proposta: "123"}
length: 4__proto__: Array(0)*

The problem occurs when I want to scroll through the values as follows, so that it does not even go into the $ .each

It does not display an error message or anything, then when I put a console.log ("message") nor enter that "message"

$(document).on('click','#btnSalvar',function () {
   $.each(arrayIDs, function (key, value) {
      console.log("mensagem")
      console.log(arrayIDs.id_produto_itens);
   });
});

The question is, how do you get the contents of this array?

Edit 1: I'll put it exactly when each snippet is called

    
asked by anonymous 20.11.2017 / 17:42

4 answers

1

Your array is not a JQuery object, so it does not work in each() .

Convert it to a JQuery object and it will work:

let arrayIDs = [];

arrayIDs.push({
  "id_produto_itens": 1
},
{
  "id_produto_itens": 2
});

$(arrayIDs).each(function (key, value) {
    console.log(arrayIDs[key].id_produto_itens);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
20.11.2017 / 18:00
1

You can get the element being iterated in each using this.

var arrayIDs = [
  {id_produto_itens: 150, id_proposta: "123"},
  {id_produto_itens: 160, id_proposta: "123"},
  {id_produto_itens: 176, id_proposta: "123"},
  {id_produto_itens: 175, id_proposta: "123"}
];

 $.each(arrayIDs, function () {
    console.log("id_produto_itens: " + this.id_produto_itens + ", id_proposta: " + this.id_proposta);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
20.11.2017 / 18:06
0

Another alternative only with JS without having to convert your array to a objeto JQuery is using the forEach () that performs a given function on each element of a array , so you need to create a function to access the elements of your array. >

Below, I created a function that displays the value id_produto_itens of the array and put this function as a parameter of forEach() .

var arrayIDs = [];

arrayIDs.push({id_produto_itens: 150, id_proposta: "123"});
arrayIDs.push({id_produto_itens: 160, id_proposta: "123"});
arrayIDs.push({id_produto_itens: 176, id_proposta: "123"});
arrayIDs.push({id_produto_itens: 175, id_proposta: "123"});

arrayIDs.forEach(function(item) {
    console.log(item.id_produto_itens);
});
    
20.11.2017 / 17:58
0

Your code is correct, EXCEPT that you forgot to put the index [key] when calling the array item:

                  faltou isso
                      ↓
console.log(arrayIDs[key].id_produto_itens);

But , I would suggest that you use the value parameter that represents each array item:

$.each(arrayIDs, function (key, value) {
   console.log("mensagem")
    console.log(value.id_produto_itens);
});

See it working:

var arrayIDs = [];

arrayIDs.push(
{
     id_produto_itens: 1,
     id_proposta: 123
},
{
     id_produto_itens: 2,
     id_proposta: 123
}
);

$.each(arrayIDs, function (key, value) {
   console.log("mensagem")
    console.log(value.id_produto_itens);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
20.11.2017 / 18:13