Javascript Object, liczba porządkowa danych

Javascript Object, liczba porządkowa danych
K3
  • Rejestracja:ponad 4 lata
  • Ostatnio:prawie 3 lata
  • Postów:8
0

Cześć,

Mam Obiekt w którym dynamicznie zmieniają się dane oraz ich położenie w Obiekcie. Jak uzyskać liczbę porządkową w którym znajduje się wartość id1?

Na przykład:

0: {id1: "produkt1", cena: 105, liczba: "3"}
1: {id2: "produkt2", cena: 135, liczba: "3"}
2: {id3: "produkt3", cena: 96 , numer 3"}

Na piechotę, widząc dane możemy się do nich dobrać poprzez Object [0] .cena.
Jak poznać liczbę porządkową, znając niektóre wartości z obiektu ..

katakrowa
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Chorzów
  • Postów:1670
0

Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.
edytowany 2x, ostatnio: katakrowa
K3
Dzięki , byłem tam wcześniej ale bez pozytywnych rezultatów. Cokolwiek wpiszę, zwraca mi -1. Chodzi mi o to, że gdy szukam czegoś o id1 i znajduję ten produkt w Obiekcie, to otrzymuję od razu liczbę porządkową samego Obiektu. Potrzebne jest mi to by pobrać cenę. Czyli Obiekt[0].cena i zwraca mi 105, Obiekt[1].cena zwraca mi 135.
katakrowa
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Chorzów
  • Postów:1670
1

Dzięki , byłem tam wcześniej ale bez pozytywnych rezultatów. Cokolwiek wpiszę, zwraca mi -1. Chodzi mi o to, że gdy szukam czegoś o id1 i znajduję ten produkt w Obiekcie, to otrzymuję od razu liczbę porządkową samego Obiektu. Potrzebne jest mi to by pobrać cenę. Czyli Obiekt[0].cena i zwraca mi 105, Obiekt[1].cena zwraca

Bo widzisz, gdyby Twoja struktura danych miała sens i postarałbyś się chociaż na tyle aby wkleić poprawne dane ( bez błędu składniowego ) to wszystko byłoby łatwiejsze.
Także zacznijmy od tego, że twoje obiekty są bez sensu i wątpię, że właśnie tak mają wyglądać.

Twoja struktura:

Kopiuj
      var myArray = [
        {id1: "produkt1", cena: 105, liczba: "3"},
        {id2: "produkt2", cena: 135, liczba: "3"},
        {id3: "produkt3", cena: 96 , numer "3"}
      ];

Raczej ma być:

Kopiuj
      var myArray = [
        {id: "produkt1", cena: 105, liczba: "3"},
        {id: "produkt2", cena: 135, liczba: "3"},
        {id: "produkt3", cena: 96 , numer: "3"}
      ];

I nagle wszystko magicznie zaczyna działać:

Kopiuj
<html>
  <body>
      
    <script>

      var myArray = [
        {id: "produkt1", cena: 105, liczba: "3"},
        {id: "produkt2", cena: 135, liczba: "3"},
        {id: "produkt3", cena: 96 , numer: "3"}
      ];
      
      
      var index = myArray.findIndex(function ( myArray ) {      
                    return myArray.id == "produkt2"
                  });
                  
      alert ( index );
      
  
    </script>
  
  </body>
</html>

https://jsfiddle.net/ps9gearv/


Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.
edytowany 1x, ostatnio: katakrowa
Maciej Cąderek
Maciej Cąderek
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Warszawa
  • Postów:1264
2

Te klucze id1, id2, id3 maja niewiele sensu (nie lepiej każde mić jako id??). To jest tablica czy obiekt? Masz wpływ na to jaką strukturę mają dane?

edytowany 1x, ostatnio: Maciej Cąderek
K3
  • Rejestracja:ponad 4 lata
  • Ostatnio:prawie 3 lata
  • Postów:8
0

@katakrowa: Obiekt otrzymuję z tablicy JSON (z localStorage ) bez nazwy. Wychodzi masło maślane. W Twoim przykładzie oczywiście wszystko gra. U mnie nadal nie. Co mogę zrobić by było dobrze?

edytowany 1x, ostatnio: kq3
katakrowa
Zrób to dobrze zgodnie z przykładem.
katakrowa
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Chorzów
  • Postów:1670
0

Czy wy ludzie w ogóle czytacie co Wam odpisują?

Masz błędy składniowe w swojej tablicy.
Prawdopodobnie to w ogóle nie jest tablica, której oczekujesz bo:

Kopiuj
0: {id1: "produkt1", cena: 105, liczba: "3"}
1: {id2: "produkt2", cena: 135, liczba: "3"}
2: {id3: "produkt3", cena: 96 , numer 3"} <<<---- TU JEST BŁĄD !!!

A skoro to nie jest poprawny obiekt / tablica to nie ma się co dziwić, że nic nie znajdujesz.

Nazwy pól obiektów id1, id2, id3 też są bez sensu.

Wklej cały swój kod jak chcesz wiedzieć więcej bo tu nie ma wróżbitów tylko są programiści.


Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.
edytowany 1x, ostatnio: katakrowa
K3
  • Rejestracja:ponad 4 lata
  • Ostatnio:prawie 3 lata
  • Postów:8
0

@Maciej Cąderek: Mam, zasysam dane do obiekty i pcham do tablicy, stamtąd dane są przerzucane do obliczenia, następnie do LocalStorage i do następnej strony gdzie jest kosz.

K3
  • Rejestracja:ponad 4 lata
  • Ostatnio:prawie 3 lata
  • Postów:8
0

@katakrowa: 2020-12-16 00.33.02  2f0540bf3058.png

katakrowa
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Chorzów
  • Postów:1670
0

Albo wklej cały kod albo to nie ma sensu. Przecież nie będę wróżył ani zgadywał co możesz mieć w kodzie.


Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.
Maciej Cąderek
Maciej Cąderek
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Warszawa
  • Postów:1264
0

Ok jeszcze jedno pytanie - chcesz znaleźć item z kluczem id1, czy z wartością klucza (product1)?

K3
  • Rejestracja:ponad 4 lata
  • Ostatnio:prawie 3 lata
  • Postów:8
0

@katakrowa: o to chodzi?
btnAppend1.addEventListener(click, () => {
let quantity = document.getElementById("quantity1").value;
if(quantity>0){
const createLi = document.querySelector(".li");
const product1 = document.querySelector(".img1");
const element = product1.cloneNode(true);
createLi.appendChild(element);
const addToPopUp = document.querySelector(".popup");
addToPopUp.style.display = "block";
product1.style.display = "block";
let intager = document.querySelector(".intager").innerHTML = quantity;
let priceTo = (myProduct1.quantity*quantity)*myProduct1.price ;
let totalBasket = document.querySelector(".totalBasketPrice").innerHTML = priceTo ;
document.querySelector(".quant").innerHTML = intager + " szt.";
arr.push("a");
arrPrice = arrPrice.filter(person => person.id != 'product1');

const obj = arrPrice.push({
id1: "product1",
price: priceTo,
number: quantity,}
);
}
});

Tasmanian Devil
Hej! Twój post prawdopodobnie zawiera niesformatowany kod. Użyj znaczników ``` aby oznaczyć, co jest kodem, będzie łatwiej czytać. (jestem botem, ta akcja została wykonana automatycznie, prawdopodobieństwo 0.9998288)
K3
  • Rejestracja:ponad 4 lata
  • Ostatnio:prawie 3 lata
  • Postów:8
0

@Maciej Cąderek: product1

katakrowa
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Chorzów
  • Postów:1670
0

Ale co czy o to chodzi? ?
Ja nie wiem o co chodzi. To Ty musisz napisać o co chodzi a nie mnie pytać.


Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.
Maciej Cąderek
Maciej Cąderek
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Warszawa
  • Postów:1264
0

A nie możesz dac zamiast:

Kopiuj
arrPrice.push({
  id1: "product1",
  price: priceTo,
  number: quantity,
});

tego:

Kopiuj
arrPrice.push({
  id: "product1",
  price: priceTo,
  number: quantity,
});

??

Wtedy masz ładne dane i przykład @katakrowa działa.

edytowany 1x, ostatnio: Maciej Cąderek
Maciej Cąderek
Maciej Cąderek
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Warszawa
  • Postów:1264
0

Btw, skopane dane możesz zawsze przekonwertować:

Kopiuj
const data = [
  { id1: "product1", price: 105, number: "3" },
  { id2: "product2", price: 135, number: "3" },
  { id3: "product3", price: 96, number: "3" },
];

const niceData = data.map((row) =>
  Object.fromEntries(
    Object.entries(row).map(([key, val]) => [
      key.match(/^id\d+$/) ? "id" : key,
      val,
    ])
  )
);

console.log(niceData);

/* Result:

[
  { id: 'product1', price: 105, number: '3' },
  { id: 'product2', price: 135, number: '3' },
  { id: 'product3', price: 96, number: '3' }
]

*/

Ale polecam raczej po prostu ładnie przygotowac dane skoro masz na to wpływ.

edytowany 1x, ostatnio: Maciej Cąderek
K3
  • Rejestracja:ponad 4 lata
  • Ostatnio:prawie 3 lata
  • Postów:8
0

@Maciej Cąderek: nadal otrzymuję -1. Czy to, że tablica jest utworzona z Obiektu JSON ma jakieś tu znacznie?

Maciej Cąderek
Maciej Cąderek
Pokaż kod
K3
  • Rejestracja:ponad 4 lata
  • Ostatnio:prawie 3 lata
  • Postów:8
0

@katakrowa: Mój błąd z literówką, wszystko działa. Wielkie dzięki!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.