Thank you all for the replies. Using the flow from @dceejay as a base this is what I was trying inititally:
[{"id":"de5e2812.901928","type":"inject","z":"87b395b1.644fe8","name":"","topic":"","payload":"[\"a\",\"b\",\"c\",\"d\"]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":170,"y":300,"wires":[["cbfc31eb.46eb1"]]},{"id":"cbfc31eb.46eb1","type":"split","z":"87b395b1.644fe8","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":340,"y":300,"wires":[["11911d0c.a3fe83"]]},{"id":"d398db8c.a1f848","type":"join","z":"87b395b1.644fe8","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":640,"y":300,"wires":[["34741e58.ed7c52"]]},{"id":"34741e58.ed7c52","type":"debug","z":"87b395b1.644fe8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":800,"y":300,"wires":[]},{"id":"11911d0c.a3fe83","type":"switch","z":"87b395b1.644fe8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"e","vt":"str"}],"checkall":"true","repair":true,"outputs":1,"x":490,"y":300,"wires":[["d398db8c.a1f848"]]}]
This works when there is at least one item that matches, but fails to progress when no items match. I understand why.
Using array.filter via a function appears to be the cleanest way, if a little opaque:
[{"id":"4f931fac.82fd","type":"inject","z":"87b395b1.644fe8","name":"","topic":"","payload":"[\"a\",\"b\",\"c\",\"d\"]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":400,"wires":[["218f8dd.bcf6a72"]]},{"id":"570daf41.c5461","type":"debug","z":"87b395b1.644fe8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":780,"y":400,"wires":[]},{"id":"218f8dd.bcf6a72","type":"function","z":"87b395b1.644fe8","name":"","func":"function filter(item) {\n return item == \"e\"; \n}\n\nmsg.payload = msg.payload.filter(filter);\nreturn msg;","outputs":1,"noerr":0,"x":450,"y":400,"wires":[["570daf41.c5461"]]}]