Подтвердить что ты не робот

Uncaught TypeError: data.push не является функцией

Я пытаюсь нажать

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

как новый идентификатор и значение для строки json. но он дает следующую ошибку:

Uncaught TypeError: data.push is not a function

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

Спасибо за ваш ответ

4b9b3361

Ответ 1

Чтобы использовать функцию push массива, ваш var должен быть массивом.

Измените data{"name":"ananta","age":"15"} на следующие:

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

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

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

..

Содержащие элементы массива будут typeof Object, и вы можете сделать следующее:

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

Обратите внимание: старайтесь быть последовательными. В моем примере один массив содержал name объекта и его age а другой - только country. Если я повторяю это с for или forEach то я не всегда могу проверить одно свойство, потому что мой пример содержит изменяющиеся элементы.

Идеальным было бы: data.push({ "name": "Max", "age": "5", "country": "Anywhere" } );

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

редактировать

Классные вещи, чтобы знать:

var array = new Array();

похож на:

var array = [];

Также:

var object = new Object();

похож на:

var object = {};

Вы также можете комбинировать их:

var objectArray = [{}, {}, {}];

Ответ 2

Ваша переменная data содержит объект, а не массив, а объекты не имеют функции push по мере возникновения ошибки. Чтобы сделать то, что вам нужно, вы можете сделать это:

data.country = 'IN';

или

data['country'] = 'IN';

Ответ 3

вы можете использовать push-метод, только если объект является массивом:

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

ИЛИ

data['country'] = "IN"

если это просто объект, который вы можете использовать

data.country = "IN";

Ответ 4

Также убедитесь, что имя переменной не является каким-то языковым ключевым словом. Например, следующее приводит к тому же типу ошибки:

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

заменить его на:

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

работает как положено.

Ответ 5

Попробуйте этот код $scope.DSRListGrid.data = data; этот для исходных данных

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

Ответ 6

убедитесь, что вы нажимаете только в массив и если их ошибка, как Uncaught TypeError: data.push не является функцией ** затем проверьте тип данных вы можете сделать это с помощью consol.log(data) надеюсь, что это поможет

Ответ 7

У меня тоже есть эта проблема, и это мой код: пожалуйста, помогите мне:

    function addName() {
    var addNew = prompt("please enter the name to add:");

name.push(addNew); }

if (request === '...') {
  addName()
}    

Ответ 8

Я думаю, что вы установили это

var data = []; 

но через некоторое время ты делаешь это

data = 'some things'; 

тогда data.push('') не работает.

Ответ 9

У меня тоже есть эта проблема, и это мой код: пожалуйста, помогите мне:

function addName() {
   var addNew = prompt("please enter the name to add:");
   name.push(addNew) ; }

    if (request === '...') {
    addName()
     }