Dwie tablice z jednej - Js

0

Cześć, mam daną tablice:

[
{
  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?

0

Maybe something like this:

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ć.

3
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);

1 użytkowników online, w tym zalogowanych: 0, gości: 1