Я пытаюсь написать функцию, которая бы возвращала все перестановки заданного массива чисел, как в примерах ниже:
a = [1, 1, 2]
permutator(a) = [
[1,1,2],
[1,2,1],
[2,1,1]
]
b = [2, 3, 4]
permutator(b) = [
[2,3,4],
[2,4,3],
[3,2,4],
[3,4,2],
[4,2,3],
[4,3,2]
]
порядок результатов не точен
Можете ли вы объяснить, почему код ниже не работает? Я попытался отладить, и я думаю, что переменные temp и result не хранятся в памяти как массивы, но я не уверен, так ли это, и как это решить.
permutator = (array) => {
const result = [];
array.forEach((num, i) => {
array.forEach((num2, j) => {
if (i !== j) {
let temp = array;
temp[i] = temp[j];
temp[j] = num;
console.log(`temp: ${temp}`);
console.log(`result: ${result}`);
if (!result.includes(temp)) result.push(temp);
console.log(`result: ${result}`);
}
});
});
return result;
}
, как вы можете видеть, я попытался console.log все безрезультатно ...