Разумеется, он хочет найти по референсу.
Если бы Вы использовали lodash, было бы весьма просто сделать так:
if (!~_.findIndex(vm.cartItems, objItems)) {
vm.cartItems.push(objItems);
}
Либо самому в цикле проходить.
// EDIT
DEMOvar cartItems = [
{id: 1, name: 'foo'},
{id: 2, name: 'bar'}
];
var itemExists = {
id: 1,
name: 'foo'
};
var itemNew = {
id: 3,
name: 'baz'
};
function hasItem(collection, needle) {
for (var i = 0, ii = collection.length; i < ii; ++i) {
var item = collection[i];
var keys = Object.keys(needle),
matched = 0;
keys.forEach(function (key) {
if (item[key] == needle[key]) {
++matched;
}
});
if (matched === keys.length) {
return true;
}
}
return false;
}
console.log(hasItem(cartItems, itemExists));
console.log(hasItem(cartItems, itemNew));