У меня есть массив объектов javascript, где я, прежде всего, хочу проверить, являются ли они URL-адресами, и если они есть, я хочу выполнить операцию, где я закодирую их с помощью Base64, а затем верну полный массив.Сначала я попытался создать новый массив URL-адресов, а затем кодировать эти URL-адреса
encodeURLHandler= (images) =>{
const expression = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
const regex = new RegExp(expression);
let urls = images.filter(img => img.match(regex))
const reader = new FileReader();
reader.readAsDataURL(urls);
reader.onload = () => {
let data = reader.result.replace(/^data:(.*;base64,)?/, '');
if ((data.length % 4) > 0) {
data += '='.repeat(4 - (data.length % 4));
}
}
. Это быстро становится немного неуклюжим, потому что тогда мне пришлось получить доступ к старому массиву, а затем добавить URL-адреса base64Encoded, поэтому яЯ мог бы отобразить объекты на основе условия, проблема в том, что мои методы кодирования base64 принимают полный массив в качестве параметра, поэтому я не знаю, как решить эту проблему самым простым способом.