The property/property type approach will handle this as you can do deep object specification ie msg.payload[2]
or msg.payload[1]
or msg.payload.length
or even msg.payload[1][0]
(that's an array of arrays).
In all honesty, hard coding stuff like this just makes life difficult for everyone and really reduces the usefulness of utility nodes like this.
Let me give you an example. I have a climate monitoring flow that passes around an object containing current temp, humidity, and air pressure readings. All these readings need to stay together as they are related and represent a complex measurement. Along the way I do some calculations for heat factor which come out with an excessive number of decimal places. It would be nice to be able to pass my object through your node and tell it to round the heat factor property to a sensible 1 decimal place. In your current approach, I need to save the original climate object somewhere, extract the heat factor property, turn it into an array, add the required decimal places, pass it through your node, extract the result from the array, and insert the result back into the original climate object before sending it on its merry way. I would much prefer to just be able to pass the entire object through your node and tell it to operate on a specific property of that object.