Javascript-Push, der eine Zahl anstelle eines Objekts zurückgibt [duplicate]

Lesezeit: 2 Minuten

Ich bin mir sicher, dass dies nur ein einfacher dummer Fehler ist, den ich übersehe, aber kann mir jemand sagen warum 3 wird stattdessen zurückgegeben [{ "method": 'popup', "minutes": ''}, {"method": 'email', "minutes": '10'}, {"method": 'popup', "minutes": '20'}];?

Ich habe ein jsfiddle gemacht, damit Sie es auch sehen können: https://jsfiddle.net/qk10arb0/3/

HTML

<p>Click the button to add a new element to the array.</p>

<button onclick="addNewReminder()">Try it</button>

<p id="demo"></p>

Javascript

function addNewReminder(){
      var newReminder = {
        "method": 'popup',
        "minutes": '20'
      };

      var reminders = [{
                "method": 'popup',
                "minutes": ''
              }, {
                  "method": 'email',
                  "minutes": '10'
              }];

    reminders = reminders.push(newReminder);
    document.getElementById("demo").innerHTML = reminders;
}

Danke!!!

  • der Rückgabewert ist die neue Länge, diese wird erwartet. Das ursprüngliche Array ist mutiert, sodass Sie es nicht zurückgeben müssen

    – aw04

    3. Mai 17 um 20:17 Uhr


  • Ich denke, die Antwort von @kind user ist klarer, um das Problem zu beheben, und der Titel und Ansatz dieser Frage können es anderen erleichtern, die das gleiche Problem haben, zu finden und zu verstehen, aber ich kann dies sicherlich als Duplikat markieren, wenn Sie so denken. Ähnliches Thema, aber in meinen Augen andere Erklärung (hoffentlich hilfreich für andere, die den dummen Fehler auch in Zukunft machen)

    – Rbar

    3. Mai 17 um 21:39 Uhr


  • Gibt es einen Grund für die Ablehnung?

    – Rbar

    3. Mai 17 um 21:43 Uhr

Array#push -Methode funktioniert in situ, Sie müssen sie keiner neuen Variablen zuweisen. Es wird kein neues Array zurückgegeben, sondern das ursprüngliche Array geändert und zurückgegeben length. Deshalb bekommst du 3 als Ergebnis.

Um das gewünschte Ergebnis zu erhalten, rufen Sie es einfach auf, ohne es einer Variablen zuzuweisen:

reminders.push(newReminder);

  • Selbst mit der obigen Lösung wird die Länge des Arrays und nicht das endgültige Array zurückgegeben

    – vikramvi

    28. Juni 19 um 9:43 Uhr

  • @vikramvi dann nach dem Schieben des neuen Elements das ganze Array zurückgeben – return reminders;

    – freundlicher Benutzer

    9. Juli 19 um 16:56 Uhr

.

821200cookie-checkJavascript-Push, der eine Zahl anstelle eines Objekts zurückgibt [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy