Прежде всего, нельзя использовать любой из встроенных методов . ех. pop()
, shift()
. Я могу использовать только циклы, массив и т. Д.
Я хотел бы создать функцию, которая принимает массив в качестве аргумента и генерирует случайные строки чисел, которые не содержат этих чисел, указанных в массиве.
Например, func([6, 2]) //=> "20353"
(2 и 6 там не будет).
Длина массива может измениться ([6, 2, 9]
, [7, 2, 1, 9]
). Таким образом, функция должна иметь возможность размещения любой длины массива.
Для решения этого практического вопроса я использовал петли for
и while
. Однако я столкнулся с проблемой, заключающейся в том, что, когда проверяется второй индекс (независимо от того, содержат ли числа, сгенерированные случайным образом, 2, или нет, в примере), если он содержит, я регенерирую случайное число, и оно может произвести первое индексное число (в этом дело, 6) которого я не хочу.
Пожалуйста, посмотрите код, который я разместил ниже, и помогите мне решить эту проблему. Кроме того, если есть другой способ получить тот же результат, который является лучшим способом, пожалуйста, дайте мне знать.
let str = "";
let arr = [];
let tem
const func = arg2 => {
for (let i = 0; i < 5; i++) {
arr[i] = Math.floor(Math.random() * 10);
}
for (let i = 0; i < arr.length; i++) {
for (let v = 0; v < arg2.length; v++) {
if (arg2[v] == arr[i]) {
do {
tem = Math.floor(Math.random() * 10);
} while (tem == arr[i])
arr[i] = tem;
}
}
}
for (let i = 0; i < arr.length; i++) str += arr[i]
return str
}
console.log(func([6, 2]))
// the output will not contain 2, which is the last index element
// however, when the second index number is removed, the output might replace it with 6, which is the first index element
Ожидаемый результат:
func([6, 3, 8]) //=> "45102"
func([4, 9]) //=> "55108"