2017-10-26 5 views
1

Ich muss eine Funktion erstellen, die einen neuen Wert in ein leeres Array eingibt, und der Wert bleibt dann im Array, auch wenn sich der Wert ändert. Lassen Sie mich mit einem Beispiel erklären, und ich habe so weit:Funktion zum Wiederholen von Werten in einem Array mit Javascript

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

Hier im leeren Array wird in der ersten Position ein neuer Wert eingegeben und bleibt in dem Array arr. Das bekomme ich in der Konsole:

(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"] 

was genau ich erreichen möchte. Anstelle dieser Werte brauche ich eine Var, die regelmäßig aktualisiert wird.

Mein Ziel ist es, den obigen Code zu reduzieren und es zu einer Funktion machen, konnte aber nichts hilfreich finden. Gibt es auch eine Möglichkeit, wie der eingegebene Wert im Array bleibt, selbst wenn er aus der Variablen entfernt wird?

Jede Hilfe wird sehr geschätzt werden !!!!!

Vielen Dank im Voraus

+0

Setzen Sie tun können, um 'if' Zustand im Inneren des' function' selbst, sondern nur vor der Rückkehr. Dein Code sollte funktionieren. Können Sie mit '<>' ein überprüfbares Code-Snippet erstellen? – gurvinder372

+0

Danke für die Antwort. Die Funktion macht ihren Job, aber wenn ich den Wert newValue ändere, "speichert" das Array den zuvor eingefügten Wert nicht (was vernünftig ist, da es keinen Code zum "Speichern" des vorherigen Wertes gibt). Ich dachte an die map() von forEach() -Methoden, aber sie geben ein neues Array zurück, immer noch basierend auf dem vorherigen Array, so dass die von Zeit zu Zeit eingefügten Werte nicht gespeichert/gespeichert werden. –

+0

Es ist nicht klar, was Sie mit * meinen, da es keinen Code gibt, um den vorherigen Wert zu speichern *. Ihr 'arr' ist lokal definiert. Deklarieren Sie Ihren arr außerhalb der Funktion. – gurvinder372

Antwort

0

Sie den neuen Wert sollte beispielsweise über eine Eingabeaufforderung dynamisch immer, wenn Sie den Wert von arr erwarten gleich bleiben nach den Quellcode zu ändern, die nicht funktionieren würde. hat noch @ gurvinder372 sagte Ihre Funktion so etwas wie dieses

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

dann, es zu benutzen aussehen sollten Sie so etwas wie dieses

for (var i = 0; i<8; i++){ 
    var value = prompt('enter char'); 
    myFunction(value); 
} 
+0

Danke für die Beantwortung von @wale Ihre for-Schleife wiederholt die verschiedenen Werte, die Sie in der Eingabeaufforderung eingeben, aber sobald Sie die Seite erneut laden, wird das Array zurückgesetzt. Ich habe deinen Code folgendermaßen geändert: 'var arr = []; \t Funktion myFunction (newValue) { \t \t \t \t arr.unshift (newValue); \t \t \t \t if (arr.length> 6) { \t \t \t arr.pop(); \t \t} \t \t Rückkehr arr \t} \t \t Konsole.log (arr); \t \t für (var i = 0; i <8; i ++) { \t var wert = "t"; \t myFunction (Wert); \t} ', da ich keine Eingabeaufforderung benötige, aber den Wert von Zeit zu Zeit ändern werde. Und die for-Schleife wiederholt nur den gleichen Wert, der 6 Mal eingefügt wurde. –

Verwandte Themen