Попробуйте этот код
const initial = [
{name: 'a', times: 40, other: 50},
{name: 'b', times: 10, other: 15},
{name: 'c', times: 15, other: 12}
];
const toBeMerged = [
{name: 'a', times: 45, other: 30},
{name: 'c', times: 10, other: 10},
{name: 'd', times: 23, other: 10}
];
//console.log(initial);
function arrayUnique(array) {
var a = array.concat();
for(var i=0; i<a.length; ++i) {
for(var j=i+1; j<a.length; ++j) {
if(a[i].name === a[j].name)
{
a[i].times +=a[j].times;
a[i].other +=a[j].other;
a.splice(j--, 1);
}
}
}
return a;
}
// Merges both arrays and gets unique items
var array = arrayUnique(initial.concat(toBeMerged));
console.log(array);
В настоящее время Вы пытаетесь назвать конструктора по умолчанию как так.
Example ex();
Это на самом деле не называет конструктора по умолчанию. Вместо этого Вы определяете прототипа функции с Примером типа возврата и не берете параметров. Для вызова конструктора по умолчанию опустите ()
Example ex;
Это объявляет прототипа функции для названной функции ex
, возврат Example
! Вы не объявляете и инициализируете переменную здесь.
Это даже компилирует? Так или иначе посмотрите эту связанную тему.
Как был отмечен Example ex();
объявляет прототипа функции. Не, что любой ожидал бы. Эта бородавка C++ будет зафиксирована новым C++ 0x стандарт. В будущем предпочтительный синтаксис будет Example ex{};
. Новая универсальная конструкция имеет много других хороших функций, посмотрите больше здесь.