オブジェクトの配列をユニークする(マージする)方法です。結果は配列のオブジェクトになります。
null は値としてカウントせず、 null 以外の値が重複した場合だけユニークにしています。
const lodash = require('lodash');
let array = [
{
"job": "会社員",
"name": "荒木 幸也"
},
{
"job": "自営業",
"name": "森岡 七美"
},
{
"job": "会社員",
"name": null
}
];
let result = array.reduce(function(res, obj){
Object.keys(obj).forEach(function(k){
res[k] = res[k] || [];
res[k] = res[k].concat(obj[k]);
res[k] = lodash(res[k]).uniq().compact().value();
});
return res;
},{});
/*
=> {
"job": [
"会社員",
"自営業"
],
"name": [
"荒木 幸也",
"森岡 七美"
]
}
*/