Универсальный способ с любым набором слов (в пределах размера стека вызова) для составления вариантов комбинаторных перестановок:
function wordsPermutation(words = []) {
const result = [];
function handle(words = [], skip = []) {
for (const word of words) {
if (skip.includes(word)) {
continue;
}
skip.push(word);
handle(words, skip);
if (skip.length === words.length) {
result.push([...skip]);
}
skip.pop();
}
}
handle(words);
return result;
}
console.log(wordsPermutation(["наша", "Маша", "горько", "плачет"]));