wake-up-neo.com

Nicht abgerufener TypeError: data.Push ist keine Funktion

Ich versuche zu schieben 

data.Push({"country": "IN"});

als neue ID und Wert für eine Json-Zeichenfolge. aber es gibt den folgenden Fehler

Uncaught TypeError: data.Push is not a function

data{"name":"ananta","age":"15"}

Vielen Dank für Ihre Antwort

43
L Ananta Prasad

Um die Push-Funktion eines Arrays zu verwenden, muss Ihr var ein Array sein.

Ändern Sie data{"name":"ananta","age":"15"} in Folgendes:

var data = [
    { 
        "name": "ananta",
        "age": "15",
        "country": "Atlanta"
    }
];

data.Push({"name": "Tony Montana", "age": "99"});

data.Push({"country": "IN"});

..

Die enthaltenen Array-Elemente sind vom Typ object und Sie können Folgendes tun:

var text = "You are " + data[0]->age + " old and come from " + data[0]->country;

Hinweis: Versuchen Sie, konsistent zu sein. In meinem Beispiel enthielt ein Array Objekteigenschaften name und age, während das andere nur country enthielt. Wenn ich dies mit for oder forEach durchführe, kann ich nicht immer nach einer Eigenschaft suchen, da mein Beispiel Elemente enthält, die sich ändern.

Perfekt wäre: data.Push({ "name": "Max", "age": "5", "country": "Anywhere" } );

Sie können also iterieren und die Eigenschaften immer abrufen, auch wenn sie leer, null oder undefiniert sind.

bearbeiten

Cooles Zeug zu wissen:

var array = new Array();

ist ähnlich wie:

var array = [];

Ebenfalls:

var object = new Object();

ist ähnlich wie:

var object = {};

Sie können sie auch kombinieren:

var objectArray = [{}, {}, {}];
70
Cagatay Ulubay

Ihre Variable data enthält ein Objekt, kein Array, und Objekte haben nicht die Funktion Push als Fehlerstatus. Um das zu tun, was Sie brauchen, können Sie Folgendes tun:

data.country = 'IN';

Oder

data['country'] = 'IN';
8
Rory McCrossan

sie können die Push-Methode nur verwenden, wenn das Objekt ein Array ist:

var data = new Array();
data.Push({"country": "IN"}).

OR

data['country'] = "IN"

wenn es nur ein Objekt ist, das Sie verwenden können

data.country = "IN";
5
rvandoni

Stellen Sie außerdem sicher, dass der Name der Variablen keine Art von Sprachschlüsselwort ist .. __ Zum Beispiel erzeugt der folgende Fehler den gleichen Fehlertyp:

var history = [];
history.Push("what a mess");

ersetze es für:

var history123 = [];
history123.Push("pray for a better language");

funktioniert wie erwartet.

4
Palo

Ich denke du hast es eingestellt

var data = []; 

aber nach einiger Zeit schaffst du es

data = 'some things'; 

dann funktioniert data.Push('') nicht.

1
asalam345

Probieren Sie diesen Code aus $ scope.DSRListGrid.data = data; dieses für Quelldaten 

            for (var prop in data[0]) {
                if (data[0].hasOwnProperty(prop)) {
                    $scope.ListColumns.Push(
                            {
                                "name": prop,
                                "field": prop,
                                "width": 150,
                                "headerCellClass": 'font-12'
                            }
                    );
                }
            }
            console.log($scope.ListColumns);
1
Jayaraman M

stellen Sie sicher, dass Sie Push nur in ein Array und wenn es sich um einen Fehler wie Uncught TypeError handelt: data.Push ist keine Funktion ** Überprüfen Sie dann den Typ der data . Sie können dies mit consol.log (Daten) machen. hoffe, das hilft

1
Nilesh Bandekar