Не работает регулярное выражение с "или"
У меня есть строка
[{"text":"1","isDone":false},{"text":"2","isDone":false},{"text":"3","isDone":false}]
Из которой надо удалить подстроку, номер которой value передается в функцию, то есть регулярное выражение должно учитывать, что подстрока может иметь либо true, либо false.
Например, для этой подстроки {"text":"1","isDone":false} value = 1;
Следовательно, результат должен быть:
[,{"text":"2","isDone":false},{"text":"3","isDone":false}]
Мои многочисленные попытки закончились на этом варианте кода:
let local = `[{"text":"${value}","isDone":false},{"text":"2","isDone":false},{"text":"3","isDone":false}]`
let reg = new RegExp(`{"text":"${taskValue}","isDone":true|false}`);
let a = local.replace(reg, '');
Кто может, помогите, пожалуйста, первый раз что-то делаю с регулярными выражениями и никак не могу понять, что не так
Ответы (2 шт):
Наглупил и не увидел такого простого решения, спасибо!
let value = "1";
let obj = JSON.parse(localStorage.getItem("tasks"));
const index = obj.findIndex(n => n.text === value);
if (index !== -1) {
obj.splice(index, 1);
}
console.log(obj);
Можно и через регулярку, но это некорректно:
let taskValue = "2";
let local = `[{"text":"1","isDone":false},{"text":"2","isDone":false},{"text":"3","isDone":false}]`
let reg = new RegExp(`\{"text":"${taskValue}","isDone":(true|false)\}`);
let a = local.replace(reg, '').replace('[,', '[').replace(',,', ',').replace(',]', ']');
console.log(a);
А представленная строка это JSON, с массивом объектов:
let taskValue = "2";
let local = `[{"text":"1","isDone":false},{"text":"2","isDone":false},{"text":"3","isDone":false}]`
let tempObj = JSON.parse(local);
let i = tempObj.findIndex(obj => obj.text === taskValue);
if (i !== -1) {
tempObj.splice(i, 1);
}
console.log(JSON.stringify(tempObj));