РЕДАКТИРОВАТЬ: Итак, this.weather - это объект, а не строка.
Использование indexOf было бы возможным, если бы ваш массив содержал только примитивные типы, такие как числа, строки и c. но поскольку ваш массив содержит объекты, он требует другого подхода.
Поэтому вам нужно использовать findIndex , чтобы проверить наличие объекта в массиве.
save() {
let data = JSON.parse(localStorage.getItem('fav')) || [],
isExist = data.findIndex((obj) => {
// Compare all keys here to validate "uniqueness"
// You can add many keys as you like
return obj.date == this.weather.date && obj.temp == this.weather.temp;
}) != -1;
if (isExist) {
// show alert here
} else {
data.push(this.weather);
localStorage.setItem('fav', JSON.stringify(data));
}
}