Поиск и удаление указанного c элемента из массива на основе нескольких значений - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь удалить определенные c элементы из массива на основе данных, которые я получаю из API. API возвращает массив таких объектов, как этот {"videoDate":"07/31/2020","videoTime":"1:00 AM"}. У меня есть существующий массив с элементами, которые выглядят так "07/31/2020 1:00 AM". Я намерен проверить, содержит ли существующий массив элемент со строкой, соответствующей строкам videoDate и videoTime из объекта, и удалить их.

        let responseArray = JSON.parse(response);
        responseArray.forEach((item) => {
          dayArray.forEach((day) =>  {
            if (day.includes(item.videoDate) && day.includes(item.videoTime)) {
              let index = dayArray.findIndex(item => item.videoDate && item.videoTime);
              dayArray.splice(index, 1);
            }
          });
        });
        console.log(dayArray);

Приведенный выше код помечает все и возвращает пустой dayArray.

        let responseArray = JSON.parse(response);
        responseArray.forEach((item) => {
          dayArray.forEach((day) =>  {
            if (day.includes(item.videoDate) && day.includes(item.videoTime)) {
              // ts-ignore
              let index = dayArray.findIndex(item.videoDate && item.videoTime);
              dayArray.splice(index, 1);
            }
          });
        });
       console.log(dayArray);

Приведенный выше код вызывает ошибку TypeError: 1:00 AM is not a function


        response.forEach((item) => {
          dayArray.forEach((day) =>  {
            if (day.includes(item.videoDate) && day.includes(item.videoTime)) {
              // ts-ignore
              let index = dayArray.findIndex(item.videoDate && item.videoTime);
              dayArray.splice(index, 1);
            }
          });
        });
        console.log(dayArray);

Приведенный выше код, в котором я не анализирую ответ, сначала возвращает response.forEach is not a function

Есть ли лучший способ сделать sh это?

1 Ответ

0 голосов
/ 05 августа 2020

Я отредактировал свое предыдущее решение, я полагал, что вы хотели сделать, если элементы (дата и время) в массиве соответствуют любому значению в возвращаемом объекте, удалите элемент из массива.

Протестируйте и дайте обратную связь

let response = `[{"videoDate":"07/31/2020","videoTime":"1:00 AM"}]`
 let dayArray = ["07/31/2020 1:00 AM"];
  let responseArray = JSON.parse(response);
  dayArray.forEach((el, i) => {    
      let item = el.split(/(^[^\s]*)\s/);
      item.shift();
       responseArray.forEach((obj) => {
            let obj_vals = Object.values(obj);
            if(obj_vals.indexOf(item[0]) != -1 && obj_vals.indexOf(item[1]) != -1 ) dayArray.splice(i, 1);
        }); });
        
        console.log(dayArray)

...