JS objects have no inherent order ( Does JavaScript Guarantee Object Property Order? ).
What you can do though, is use your array to "apply" an order . . . create the array with entries that matches the keys in the object (as you appear to already have) and then, when you loop through the array, reference the key in the object that matches the current value in the array.
for (var i = 0; i < theArray.length; i++) {
if (theObject.hasOwnProperty(theArray[i]) {
. . . do stuff with theObject[theArray[i]] . . .
}
}
Alternately, you could go with an array of objects, which would give the values an inherent order, but would have some impacts on the relationship of the data in the original object, as well as how you access that data.
[
{'green':'three'},
{'red':'one'},
{'blue':'two'}
]