Перевод строки в объект
Имеется строка "(Word или (it и then) или word2) и Word3". Необходимо эту строку трансформировать в объект: {and: [{ or: ["Word", { and: ["it", "then"] }, "Word2"] }, "Word3"]}. Имеется реализация рекурсией, но она не полна и может работать только с массивом:
type OperationsRussian = 'ИЛИ' | 'И'
const LogicalOperations: Record<OperationsRussian, Operations> = {
ИЛИ: 'or',
И: 'and',
}
export const preparationIncludedPhrases = (
phrases: unknown
): Record<string, object> => {
const firstValue = Array.isArray(phrases[0])
? preparationIncludedPhrases(phrases[0])
: phrases[0]
const operation = phrases[1]
const secondValue = Array.isArray(phrases[2])
? preparationIncludedPhrases(phrases[2])
: phrases[2]
return {
[LogicalOperations[operation as OperationsRussian]]: [
firstValue,
secondValue,
],
}
}
preparationIncludedPhrases([['apple', 'И', ['tiger', 'ИЛИ', 'lion']], 'ИЛИ', 'word'])