У меня есть массив элементов, которые я читаю из DOM следующим образом:

let delete00To04Am = document.getElementById("time000am400amEveryDay").value;

console.log('delete00To04Am');
//this yields: 1669410000000,1669496400000 

..

delete00To04Am = delete00To04Am.split(',');

console.log('delete00To04Am: ' ,delete00To04Am);
//this yields: delete00To04Am: ['1669410000000', '1669496400000']

..

timesForAdvert = timesForAdvert.filter((item)=> item !== delete00To04Am )
console.log("timesForAdvert: " ,timesForAdvert);
//this yields: timesForAdvert: [1669482000000, 1669568400000, 1669410000000, 1669496400000]

Как видите, ничего не было удалено из массива. Как заставить timesForAdvert = timesForAdvert.filter((item)=> item !== delete00To04Am ) работать?

1
SirBT 25 Ноя 2022 в 21:16
Можете ли вы кратко объяснить свой запрос? или дайте мне образец массива
 – 
Sanket Jariwala
25 Ноя 2022 в 21:19
Я пытаюсь удалить несколько элементов из существующего массива, используя значения, полученные из DOM.
 – 
SirBT
25 Ноя 2022 в 21:21
Вы проверили ответ @Majed Badawi?
 – 
Sanket Jariwala
25 Ноя 2022 в 21:23
filter не не мутировать исходный массив. Если вы действительно хотите отредактировать массив на месте, вам потребуется использовать splice.
 – 
romellem
25 Ноя 2022 в 21:33

1 ответ

Использование Array#includes :

const 
  delete00To04Am = ['1669410000000', '1669496400000'],
  timesForAdvert = [1669482000000, 1669568400000, 1669410000000, 1669496400000];

const res = timesForAdvert.filter(item =>
  !delete00To04Am.includes(item.toString())
);

console.log(res);

Предлагаемые улучшения вашего подхода:

const 
  delete00To04Am = '1669410000000,1669496400000',
  timesForAdvert = [1669482000000, 1669568400000, 1669410000000, 1669496400000];

const exclude = delete00To04Am.split(',').map(Number);
const res = timesForAdvert.filter(item => !exclude.includes(item));

console.log(res);
0
Majed Badawi 25 Ноя 2022 в 21:20