Как определить содержит ли массив элементов определенные слова
Есть массив обьектов:
const arr = [
{
label: 'Phone',
value: '',
},
{
label: 'Phone 1',
value: '',
},
{
label: 'email',
value: '',
}
]
Нужно проверить если value пустое и это label есть в массиве contacts = ['phone', 'email'] то value нужно присвоить No permission. Проблема с моим кодом что оно находит только Email, Phone а вот Phone 1 не находит а должно тоесть Phone 1 Тоже должно быть присвоено No permission.
arr.map((item) => {
if (!item.value) {
const contacts = ['phone', 'email'];
const hasLabel = contacts.includes(item.label.toLowerCase());
item.value = hasLabel ? 'No permission' : item.value;
}
return item;
});
Ответы (2 шт):
Автор решения: lijil
→ Ссылка
arr.map((item) => {
if (!item.value) {
const contacts = [/phone/i, /email/i];
const hasLabel = contacts.some(v=>v.test(item.label));
item.value = hasLabel ? 'No permission' : item.value;
}
return item;
});
Автор решения: Александр Лесив
→ Ссылка
const obj = getObject();
const result = obj.map((item) => {
if (!item.value) {
const contacts = ['phone', 'email'];
const hasLabel = contacts.some(el => item.label.toLowerCase().startsWith(el));
item.value = hasLabel ? 'No permission' : item.value;
}
return item;
});
console.log(result);
function getObject() {
return [{
label: 'Phone',
value: '',
},
{
label: 'Phone 1',
value: '',
},
{
label: 'email',
value: '',
}
]
}