Давайте сначала превратим array1
в объект, который отображает идентификаторы на соответствующие объекты:
var idMap = {}
array1.forEach(function(element) {
idMap[element.id] = element
})
Затем вы можете получить желаемый результат, выполнив
var result = array2.map(function(id) {
return idMap[id]
});
I'm not sure about a tool but take a look at Boolean Algebra
you can draw a grid of all the inputs and output to try and find a minimal boolean expression
Программное обеспечение программного обеспечения DMS может сделать это.
Это генерализованная технология компилятора для анализа языков (включая Java) к ASTS и символьные таблицы. DMS также предоставляет преобразования источников и источников, а также ассоциативный и коммутативный закон об переписке.
Ваши логические выражения появятся как деревья выражения Java AST. Предоставляя набор правил о булевой алгебре, вы можете манипулировать эти деревья выражений.
Мы сделали это в прошлом, чтобы провести упрощение и преобразование булевой экспрессии для C, RLL и систему диагностических уравнений, как по широкомасштабному выражениям, так и на множестве выражений среднего масштаба (масштабируется как ваш пример).
Отредактировать 5/19/2010: см. Пример пример обычных преобразований алгебры с использованием DMS. Его тривиально построить вариант, который вместо этого делает логический алгебр.