Skip to content

Instantly share code, notes, and snippets.

@M-ZubairAhmed
Created January 22, 2018 15:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save M-ZubairAhmed/9554e16cfe1fdb2335082b54391de01e to your computer and use it in GitHub Desktop.
Save M-ZubairAhmed/9554e16cfe1fdb2335082b54391de01e to your computer and use it in GitHub Desktop.
Mod Studio Task
const inputString =
'[ "AND", ["<", "var1", "var2"], [ "OR", [">", "var3", "var4"], ["==", "var5", "var6"] ] ]'
let cleanedString = ''
for (var i = 0; i < inputString.length; i++) {
if (
inputString[i] !== '[' &&
inputString[i] !== ']' &&
inputString[i] !== '"'
) {
cleanedString += inputString[i]
}
}
let arrayString = []
let tempString = '',
j = 0
for (var i = 0; i < cleanedString.length; i++) {
if (cleanedString[i] === ',' || i === cleanedString.length - 1) {
arrayString[j] = tempString.trim()
j++
tempString = ''
} else {
tempString += cleanedString[i]
}
}
let operStash = [],
finalArray = []
for (var i = 0; i < arrayString.length; i++) {
arrayString[i]
if (
arrayString[i] === 'AND' ||
arrayString[i] === 'OR' ||
arrayString[i] === '>' ||
arrayString[i] === '<' ||
arrayString[i] === '=='
) {
operStash.push(arrayString[i])
} else {
finalArray.push(arrayString[i])
if (operStash.length !== 0) {
finalArray.push(operStash.pop())
}
}
}
let c = [],
andOpened = false
for (var i = 0; i < finalArray.length; i++) {
if (finalArray[i] === 'AND') {
if (andOpened) {
c.push(')')
c.push('AND')
c.push('(')
andOpened = true
} else {
c.push('AND')
c.push('(')
andOpened = true
}
} else {
c.push(finalArray[i])
if (andOpened && i === finalArray.length - 1) {
c.push(')')
}
}
}
const finalString = c.join(' ')
console.log(finalString)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment