У меня есть массив элементов, которые я читаю из 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
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
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.
filter
не не мутировать исходный массив. Если вы действительно хотите отредактировать массив на месте, вам потребуется использоватьsplice
.