if (this.articleArray.indexOf(data) === -1) {
this.articleArray.push(data)
всё равно добавляется
А, позвольте поинтересоваться, каков тип значения, которое вы пытаетесь добавить? Не объект ли? При сравнении объектов сравниваются их ссылки, а не содержимое. Поэтому проверку наличия элемента надо выполнять иначе, по id (если таковой имеется, или другому уникальному свойству), как-то так:
if (!this.articleArray.some(n => n.id === data.id)) {
...
Если вдруг попытки добавить уже присутствующие в массиве элементы будут производиться часто, то, чтобы постоянно не бегать по массиву, можно сделать вычисляемое свойство, представляющее набор id содержащихся в массиве объектов и проверять, содержится ли в нём id проверяемого объекта (проверка наличия значения в наборе в среднем выполняется быстрее, чем поиск по массиву):
computed: {
articleIds() {
return new Set(this.articleArray.map(n => n.id));
},
...
if (!this.articleIds.has(data.id)) {
...