Некоторое время я пытался понять эту проблему, но у меня ничего не получилось. Вот что у меня есть на данный момент:
var repeatNumbers = function(data) {
var repeated = [];
for ( var x = 0; x < data.length; x++){
var unit = data[x][0]
var quant = data[x][1]
for(var i = quant; i > 0; i--){
repeated.push(unit);
repeated.join(',');
}
return repeated;
}
};
console.info(repeatNumbers([1, 10]));
В основном я пытаюсь повторить первое число массива на основе второго значения. Любое понимание будет очень признательно, спасибо! :)
Вы хотите сказать, что хотите, чтобы 0-й элемент был таким же, как 1-й элемент в массиве? Звучит банально? Не могли бы вы немного лучше объяснить вашу ситуацию?
Ожидаемый результат - это массив из единиц, повторяющийся 10 раз?
Извините за непрофессионализм с моим сообщением, я впервые использую форум. В этом случае мой ожидаемый результат будет 1 повторяться 10 раз в массиве.
Можете ли вы опубликовать конкретный пример (вывод кода, а не слова)? например [1,1,1,1,1,1,1,1,1,1] что ли?
Да, именно так [1,1,1,1,1,1,1,1,1,1]
([ length, item ]) => new Array(length).fill(item)Array(10).fill(1); или Array.from({length:10}, i => 1); или Array.from({ length: 10 }).fill(1);


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам не нужно перебирать массив, если у вас есть только два числа, где первое число (с индексом 0) - это число, которое вы хотите повторить, а второе число - это количество раз, которое вы хотите повторить это число ( индекс 1).
Когда у вас есть количество раз, которое вы хотите повторить число, вы можете просто использовать цикл for, чтобы ввести число в массив repeated такое количество раз.
См. Рабочий пример ниже (см. Комментарии к коду для дальнейшего объяснения):
var repeatNumbers = function(data) {
var repeated = []
var toRepeat = data[0]; // get the first number in the array
var times = data[1]; // get the second number in the array
// loop the number of times you want to repeat the number:
for(var i = 0; i < times; i++) {
repeated.push(toRepeat); // push the number you wish to repeat into the repeated array
}
return repeated.join(); // return the joined array (as a string - separated by commas)
}
console.info(repeatNumbers([1, 10]));Великолепное спасибо за помощь!
@ Cristof.M не волнуйся :)
Если я правильно понял ваш вопрос, вы хотите, чтобы функция repeatNumbers() возвращала массив с первым элементом в переданном массиве, реплицированном вторым элементом в переданном массиве.
Для этого вы можете сделать следующее:
var repeatNumbers = function(data) {
// Extract the "value" to be repeated, and the "repeated" value
// that will control the number of "value" items in result array
var value = data[0];
var repeated = data[1];
var result = []
// Loop over repeated range, and push value into the result array
for (var i = 0; i < repeated; i++) {
result.push(value);
}
// Result result array
return result;
};
console.info(repeatNumbers([1, 10]));Или, если вам не нужно поддерживать IE, более продуманным подходом будет:
var repeatNumbers = function(data) {
var value = data[0];
var repeated = data[1];
return (new Array(repeated).fill(value));
};
console.info(repeatNumbers([1, 10]));
Вы можете подумать об использовании согласованного отступа при написании кода - это упростит чтение и отладку не только для потенциальных респондентов, но и для вас, когда мы все сможем сразу увидеть блоки
{}и их уровень вложенности. Можете ли вы привести конкретный пример ввода и ожидаемого результата?