Функция для повторения значений в массиве с использованием Javascript

1

Мне нужно создать функцию, которая вводит новое значение в пустой массив, а затем значение остается в массиве, даже если значение изменяется. Позвольте мне объяснить на примере, и я до сих пор:

var arr = [];
arr.unshift("f");
if (arr.length > 6) {
   arr.pop();
}
console.log(arr);

arr.unshift("e");
if (arr.length > 6) {
  arr.pop();
}
console.log(arr);

arr.unshift("d");
if (arr.length > 6) {
  arr.pop();
}
console.log(arr);

arr.unshift("c");
if (arr.length > 6) {
  arr.pop();
}
console.log(arr);

arr.unshift("b");
if (arr.length > 6) {
  arr.pop();
}
console.log(arr);

arr.unshift("a");
if (arr.length > 6) {
  arr.pop();
}
console.log(arr);
arr.unshift("z");
if (arr.length > 6) {
  arr.pop();
}
console.log(arr);

Здесь в пустом массиве новое значение вводится в первую позицию и остается в массиве arr. Это то, что я получаю в консоли:

(6) ["f"]    
(6) ["e", "f"]    
(6) ["d", "e", "f"]    
(6) ["c", "d", "e", "f"]    
(6) ["b", "c", "d", "e", "f"]    
(6) ["a", "b", "c", "d", "e", "f"]    
(6) ["z", "a", "b", "c", "d", "e"]

чего я хочу достичь. Вместо этих значений мне нужен var, который будет регулярно обновляться.

var newValue = value_to_be_updated;

function myFunction(newValue) {
    var arr = [];
    arr.unshift(newValue);
    return arr
}

if (arr.length > 6) {
    arr.pop();
}

Моя цель - уменьшить приведенный выше код и сделать его функцией, но не может найти ничего полезного. Также есть ли способ, которым вводимое значение остается в массиве, даже если оно удалено из var?

Любая помощь будет чрезвычайно оценена !!!!!

заранее спасибо

  • 0
    Поместите ваше условие if внутри самой function , непосредственно перед return . Ваш код должен работать. Можете ли вы создать проверяемый фрагмент кода с помощью <> ?
  • 0
    Спасибо за ответы. Функция выполняет свою работу, но если я изменю значение newValue, массив не «сохранит» ранее вставленное значение (что разумно, поскольку нет кода для «сохранения» предыдущего значения). Я подумал о методах map () forEach (), но они возвращают новый массив, все еще основанный на предыдущем массиве, поэтому значения, вставляемые время от времени, не сохраняются / не сохраняются.
Показать ещё 1 комментарий
Теги:
arrays

1 ответ

0

Вы должны получать новое значение динамически, используя, например, подсказку, если вы ожидаете, что значение arr останется неизменным после изменения исходного кода, который не будет работать. Тем не менее @gurvinder372 сказал, что ваша функция должна выглядеть примерно так

var arr = [];
function myFunction(newValue) {
  arr.unshift(newValue);
  if (arr.length > 6) {
    arr.pop();
  }
  return arr
}

то для его использования вы можете сделать что-то подобное

for (var i = 0; i<8; i++){
   var value = prompt('enter char');
   myFunction(value);
}
  • 0
    Спасибо, что ответили @wale, цикл for повторяет различные значения, которые вы вводите в приглашении, но после повторной загрузки страницы массив сбрасывается. Я изменил ваш код следующим образом: var arr = []; function myFunction(newValue) { arr.unshift(newValue); if (arr.length > 6) { arr.pop(); } return arr } console.log(arr); for (var i = 0; i<8; i++){ var value = "t"; myFunction(value); } , поскольку мне не нужно приглашение, но я буду время от времени изменять значение. И цикл for только повторяет одно и то же значение, вставленное 6 раз.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню