Это такой же основной вопрос структуры данных, что и конкретный вопрос реализации.Как преобразовать две коллекции в один
У меня есть две коллекции:
['One', 'Two', 'Three']
[{'Name': 'Two', 'Time': '12:00'}, {'Name': 'Four', 'Time': '14:30'}]
То, что я хочу, чтобы объединить их в третью коллекцию:
[
{'Name': 'One', 'HasTime': false, 'Valid': true },
{'Name': 'Two', 'HasTime': true, 'Valid': true, 'Time': '12:00' },
{'Name': 'Three', 'HasTime': false, 'Valid': true },
{'Name': 'Four', 'HasTime': true, 'Valid': false, 'Time': '14:30' },
]
я могу это сделать, как в этом псевдокоде:
// Pseudo-Code, hence no isOwnProperty and other checks
var r = [];
for(v in one) {
var obj = { Name: v, Valid: true, HasTime: false };
for(t in two) {
if(t.Name === v) {
obj.HasTime = true;
obj.Time = t.Time;
break;
}
}
r.push(obj);
}
for(t in two) {
var valid = false;
for(x in r) {
if(x.Name === t.Name) {
valid = true;
break;
}
}
if(!valid) {
var obj = new { Name: t.name, Valid: false, HasTime: true, Time: t.Time };
r.push(obj);
}
}
return obj;
Это кажется неэффективным, и я задаюсь вопросом, может ли Угловая функция уже иметь такую функцию - моя проблема в том, что я не знаю что называется этой техникой. Я предполагаю, что существует термин в теории множеств или функциональном программировании, поскольку это по существу Союз, за которым следует преобразование, но основной термин для этого в функциональном программировании ускользает от меня - есть ли это имя?