Вернуть первое значение массива на основе второго значения

Некоторое время я пытался понять эту проблему, но у меня ничего не получилось. Вот что у меня есть на данный момент:

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]));

В основном я пытаюсь повторить первое число массива на основе второго значения. Любое понимание будет очень признательно, спасибо! :)

Вы можете подумать об использовании согласованного отступа при написании кода - это упростит чтение и отладку не только для потенциальных респондентов, но и для вас, когда мы все сможем сразу увидеть блоки {} и их уровень вложенности. Можете ли вы привести конкретный пример ввода и ожидаемого результата?

CertainPerformance 31.12.2018 03:32

Вы хотите сказать, что хотите, чтобы 0-й элемент был таким же, как 1-й элемент в массиве? Звучит банально? Не могли бы вы немного лучше объяснить вашу ситуацию?

seebiscuit 31.12.2018 03:37

Ожидаемый результат - это массив из единиц, повторяющийся 10 раз?

Jack Moody 31.12.2018 03:38

Извините за непрофессионализм с моим сообщением, я впервые использую форум. В этом случае мой ожидаемый результат будет 1 повторяться 10 раз в массиве.

Cristof.M 31.12.2018 03:39

Можете ли вы опубликовать конкретный пример (вывод кода, а не слова)? например [1,1,1,1,1,1,1,1,1,1] что ли?

CertainPerformance 31.12.2018 03:41

Да, именно так [1,1,1,1,1,1,1,1,1,1]

Cristof.M 31.12.2018 03:41
([ length, item ]) => new Array(length).fill(item)
CertainPerformance 31.12.2018 03:44
Array(10).fill(1); или Array.from({length:10}, i => 1); или Array.from({ length: 10 }).fill(1);
m fauzan abdi 31.12.2018 03:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
8
758
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам не нужно перебирать массив, если у вас есть только два числа, где первое число (с индексом 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 31.12.2018 03:47

@ Cristof.M не волнуйся :)

Nick Parsons 31.12.2018 03:48

Если я правильно понял ваш вопрос, вы хотите, чтобы функция 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]));

Другие вопросы по теме