Вы можете использовать reduce()
для сопоставления с объектом и Object.values()
для получения результирующего массива
var data = [
['dupeValue', { data: 123 }],
['dupeValue', { data: 123 }],
['otherValue', { data: 1111111 }],
['dupeValue', { data: 123 }]
]
var result = Object.values(data.reduce((a, c) => (a[c[0]] = c, a), {}))
console.log(result)
Что Вы хотите сделать с проанализированным SQL? Я могу рекомендовать некоторым реализацию Java Lex/Yacc (BYACC/J, Кубок Java), что можно использовать существующую грамматику SQL с.
Если Вы хотите на самом деле сделать что-то с получающейся проанализированной грамматикой, я мог бы предложить смотреть на Derby, база данных SQL с открытым исходным кодом, записанная в Java.
ANTLR3 имеет грамматику ANSI SQL в наличии. Можно использовать это для создания собственного синтаксического анализатора.
ANTLR4 имеет грамматику SQL.
Синтаксический анализатор
При необходимости в синтаксическом анализаторе должен быть синтаксический анализатор в кодовой базе Derby Apache.
Контакт с определенным для поставщика SQL
Можно хотеть посмотреть на .native () метод на объекте соединения JDBC, который можно передать его поставщик нейтральные запросы, которые будут постобработаны в поставщика определенные запросы.