Объединить массив объектов JavaScript по ключу свойства
Прежде всего: я уже нашелэта темаЭто, в принципе, именно то, что я хочу, но я старался изо всех сил, чтобы применить это к моим потребностям - я не мог.
Итак, у меня есть следующая функция JavaScript:
function loadRelationData(object) {
var result = [];
var parents = []
parents = getParentObjectsByObjectID(object['ObjectID']);
var tmpFirstObjects = [];
var tmpOtherObjects = [];
$.each(parents, function (_, parent) {
var keyName = 'Übergeordnete ' + parent['ObjectType'];
var pushObject = {};
if (parent['ObjectType'] == object['ObjectType']) {
pushObject['Fieldname'] = keyName;
pushObject['Value'] = parent['Name'];
tmpFirstObjects.push(pushObject);
} else {
pushObject['Fieldname'] = keyName;
pushObject['Value'] = parent['Name'];
tmpOtherObjects.push(pushObject);
}
});
result = result.concat(tmpFirstObjects).concat(tmpOtherObjects);
return result;
}
Родительский массив выглядит такэтот
И моя функция создает эторезультат
Это может быть немного сложно, но мне нужно разделить это так, потому что мне нужен порядок.
То, что я хочу, это массив с обоими "TEC_MapLocations", объединенными так:
[
{Fieldname: 'Übergeordnete TEC_Equipment', Value: 'E0192'},
{Fieldname: 'Übergeordnete TEC_MapLocation', Value: ['M100', 'M200']},
{Fieldname: 'Übergeordnete TEC_FunctionalLocation', Value: 'FL456'}
]
Любые идеи о том, как изменить мой код для достижения желаемого результата сразу или как объединить массив результатов?
редактировать: я использовалРешение Джозефа и использовал следующую (быструю и грязную) функцию сортировки, чтобы вернуть желаемую сортировку:
output.sort(function (a, b) {
if (a.ObjectType == object.ObjectType) {
return -1
} else {
return 1
}
});