Dwie tablice z jednej - Js

Dwie tablice z jednej - Js
Mateuszto
  • Rejestracja:około 7 lat
  • Ostatnio:5 miesięcy
  • Lokalizacja:Poznań
  • Postów:163
0

Cześć, mam daną tablice:

Kopiuj
[
{
  name: 'Jeden1'
  key: 1
},
{
  name: 'Jeden2'
  key: 1
},
{
  name: 'Jeden3'
  key: 2
},
]

Musiałbym otrzymać z tego dwie tablice w której są obiekty z key: 1, a w drugiej z key: 2
Jaki jest najlepszy sposób na rozwiązanie tego problemu?

FI
  • Rejestracja:ponad 13 lat
  • Ostatnio:11 dni
  • Postów:684
0

Maybe something like this:

Kopiuj
const tab = [
{
  name: 'Jeden1',
  key: 1
},
{
  name: 'Jeden2',
  key: 1
},
{
  name: 'Jeden3',
  key: 2
},
]
const jeden1 = tab[0];
const jeden2 = tab[1];
const tab1 = [jeden1,jeden2];
const jeden3 = tab[2];
const tab2 = [jeden3];


I hope it's clear;-)) (sorry, bawię się w angielski)
Edit: Aha, tylko w kodzie masz syntaxy, bo zapomniałeś o przecinkach.
Teraz masz w moim kodzie tak, jak powinno być.

edytowany 2x, ostatnio: finito
LukeJL
twoje rozwiązanie to pisanie "na pałę" :D dane się zmienią albo będzie ich więcej i się rozwali.
FI
@LukeJL: Wiem o tym;-) I to wiem świadomie bez bicia;-) Autor prosił o coś najprostszego, to wrzuciłem coś "na pałę". Obiecuję się poprawić;-)
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:około godziny
  • Postów:8423
3
Kopiuj
const arr = [
{
  name: 'Jeden1', // dodaj sobie przecinki. w pierwszym poście piszesz bez.
  key: 1
},
{
  name: 'Jeden2', 
  key: 1
},
{
  name: 'Jeden3',
  key: 2
},
];

// tworzymy całkowicie pusty obiekt (dlatego musimy go utworzyć w ten sposób)
// gdybyśmy napisali output = {}
// to taki obiekt nie jest do końca pusty, bo ma wbudowane metody typu 'toString' i inne śmieci
// które mogłyby nam przeszkadzać (jeśli ktoś by zrobił key: 'toString' to na zwykłym obiekcie by się rozjechało)
// alternatywnym podejściem byłoby używanie obiektu Map
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
const output = Object.create(null); 

arr.forEach(item => {
    // tworzymy pustą tablicę, jeśli jeszcze jej nie ma i przypisujemy do odpowiedniej właściwości obiektu output
	output[item.key] = output[item.key] || []; 
	output[item.key].push(item); // // wrzucamy element
});

// output to teraz obiekt, które ma właściwości w formie kluczy "1", "2" i tam odpowiednia lista obiektów
console.log(output);

edytowany 3x, ostatnio: LukeJL

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.