web-dev-qa-db-fra.com

Uncaught TypeError: data.Push n'est pas une fonction

J'essaie de pousser 

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

comme nouvel identifiant et valeur pour une chaîne json. mais cela donne l'erreur suivante

Uncaught TypeError: data.Push is not a function

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

Advance Merci pour votre réponse

43
L Ananta Prasad

Pour utiliser la fonction Push d'un tableau, votre var doit être un tableau.

Changez data{"name":"ananta","age":"15"} en suivant:

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

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

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

..

Les éléments de tableau contenant seront typeof et vous pouvez effectuer les opérations suivantes:

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

Remarque: essayez d'être cohérent. Dans mon exemple, un tableau contenait les propriétés d'objet name et age, tandis que l'autre ne contenait que country. Si j'itère ceci avec for ou forEach, je ne peux pas toujours rechercher une propriété, car mon exemple contient des éléments qui changent.

Parfait serait: data.Push({ "name": "Max", "age": "5", "country": "Anywhere" } );

Ainsi, vous pouvez itérer et toujours obtenir les propriétés, même si elles sont vides, nulles ou indéfinies.

modifier

Des trucs cool à savoir:

var array = new Array();

est similaire à:

var array = [];

Également:

var object = new Object();

est similaire à:

var object = {};

Vous pouvez aussi les combiner:

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

Votre variable data contient un objet, pas un tableau, et les objets n'ont pas la fonction Push en tant qu'états d'erreur. Pour faire ce dont vous avez besoin, vous pouvez le faire:

data.country = 'IN';

Ou

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

vous pouvez utiliser la méthode Push uniquement si l'objet est un tableau:

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

OR

data['country'] = "IN"

si c'est juste un objet que vous pouvez utiliser

data.country = "IN";
5
rvandoni

Assurez-vous également que le nom de la variable ne correspond pas à un mot-clé de langage . Par exemple, ce qui suit génère le même type d'erreur:

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

en le remplaçant par:

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

fonctionne comme prévu.

4
Palo

Essayez ce code $ scope.DSRListGrid.data = data; celui-ci pour les données source 

            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

assurez-vous que Poussez dans un tableau uniquement et si leur erreur est semblable à Uncaught TypeError: data.Push n’est pas une fonction ** puis vérifiez le type de data vous pouvez le faire en consol.log (data) espérons que cela vous aidera

1
Nilesh Bandekar