Wyciągnięcie liczb z listy

Wyciągnięcie liczb z listy
G8
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Postów:85
0

Witam,

Mam listę zawierającą kolejne listy. Każda z nich składa się z tekstu i liczby.

Kopiuj
const numbers = []
const items = [['Item1', 10], ['Item2', 5], ['Item3', 7]]

Muszę zrobić listę numbers z wszystkich liczb zawierających się w items. Chciałem zrobić items.forEach() + if + numbers.push() ale items zawiera kolejne listy i nie wiem jak to zrobić.

edytowany 2x, ostatnio: Riddle
NI
  • Rejestracja:około 3 lata
  • Ostatnio:około rok
  • Postów:3
3

Jak masz tablice tablic albo tablicę obiektów to najlepiej sobie przejść po tablicy i "zdestrukturyzować" dane.
ewentualnie jako, że każdy item to tablica to numer możesz wyciągnąć poprzez item[1].

Kopiuj
items.forEach(item => {
  const [_, number] = item;
  numbers.push(number);
});
edytowany 1x, ostatnio: nielubiespamu
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:minuta
  • Lokalizacja:Laska, z Polski
  • Postów:10074
3
Kopiuj
const numbers = [];
items.forEach(item => numbers.push(item[1]));

albo

Kopiuj
const items = [['Item1', 10], ['Item2', 5], ['Item3', 7]]
const numbers = items.map(item => item[1]);

albo

Kopiuj
const items = [['Item1', 10], ['Item2', 5], ['Item3', 7]];
const numbers = [];

for (const [name, value] of items) {
  numbers.push(value);
}
edytowany 2x, ostatnio: Riddle
LukeJL
pytanie, czy w tej liście mogą znajdować się duplikaty i jak powinny być traktowane. Dla [ [ 'Item1', 10 ], [ 'Item2', 5 ], [ 'Item3', 10 ] ] wynik będzie [10, 5, 10]. Pytanie, czy to dobrze, czy źle. Ale to już pytanie o konkretny przypadek użycia @Glt87
Riddle
Jakie to ma znaczenie? Nawet jak będą duplikaty to zostaną dodane, po prostu.
G8
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Postów:85
0

Dzięki za odpowiedzi. Znalazłem jeszcze jeden sposób:

Kopiuj
 const numbers = items.flat().filter(element => typeof element === 'number');
Gouda105
To działa, ale poprzednie rozwiązania są krótsze, bardziej czytelne i CHYBA wydajniejsze. Zaraz zrobię testy i dam znać
Gouda105
Mistrzem w testach nie jestem, ale z moich eksperymentów wynika, że Twój sposób jest jest najwolniejszy. Jeśli źle przeprowadziłem testy to proszę niech mnie ktoś bardziej doświadczony poprawi. https://jsbench.me/9nl6wmwlc6/1
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:3 minuty
  • Postów:8423
1

Tutaj jeszcze rozwiązanie, które ignoruje duplikaty:

Kopiuj
const items = [['Item1', 10], ['Item2', 5], ['Item3', 7], ['Item4', 10], ['Item5', 11]];
const result = Array.from(new Set(items.map(item => item[1]))); 

czyli result będzie równe [ 10, 5, 7, 11 ] zamiast [ 10, 5, 7, 10, 11 ]


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.