Usuwanie obiektów z tablicy [JS / React Native]

0

Witam. Mam taką tablicę

let subjectsArr = [
  {
    "id": uuid.generate(),
    "name": "JP",
    "gradesInfo": [
      {
        "id": uuid.generate(),
        "name": "1",
        "grade": 5,
        "weight": 3,
        "date": "12.12.1999"
      },
      {
        "id": uuid.generate(),
        "name": "Kartkówka1",
        "grade": 4,
        "weight": 2,
        "date": "01.01.2000"
      },
    ],
    "meanFunc": meanFunc
  },
];

Posiadam konkretne ID obiektu w tablicy gradesInfo. I tu moje pytanie jak usunąć obiekt o podanym ID?
Próbowałem coś z metodami tablic. Np:

const [subjects, setSubjects] = useState(subjectsArr);
const deleteGrade = (id) => {
    Alert.alert(
      "Usuń ocenę",
      "Czy na pewno chcesz trwale usunąć ocenę?",
      [
        {
          text: "Tak",
          onPress: () => {
// TUTAJ
           const newSubjects = subjects;
            newSubjects.forEach((subject) => {
              subject.gradesInfo.filter((grade) => grade.id !== id);
            });
            setSubjects(newSubjects);
// KONIEC
          }
        },
        {
          text: "Anuluj",
          onPress: () => {console.log("Cancel")}
        }
      ],
      { cancelable: true }
    );
  };

Ale nie działa i nie mam pojęcia dlaczego. Proszę o pomoc i z góry dzięki.

1
bartox; napisał(a):

Ale nie działa i nie mam pojęcia dlaczego.

Doczytaj co zwraca forEach
const newSubjects = subjects; - po co coś takiego robisz?

setSubjects((subjects) =>
  subjects.map((subject) => {
    subject.gradesInfo = subject.gradesInfo.filter((grade) => grade.id !== id);
    return subject;
  })
);

0
mechanix napisał(a):
bartox; napisał(a):

Ale nie działa i nie mam pojęcia dlaczego.

Doczytaj co zwraca forEach
const newSubjects = subjects; - po co coś takiego robisz?

setSubjects((subjects) =>
  subjects.map((subject) => {
    subject.gradesInfo = subject.gradesInfo.filter((grade) => grade.id !== id);
    return subject;
  })
);

O bogowie. Dziękuję. Nie byłem świadom, że tak może działać funkcja z useState() + brak wprawy z metodami tablic...

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