未捕获的TypeError:data.push不是函数

Ana*_*sad 58 javascript jquery json

我想推

data.push({"country": "IN"});
Run Code Online (Sandbox Code Playgroud)

作为json字符串的新id和值.但它会出现以下错误

Uncaught TypeError: data.push is not a function

data{"name":"ananta","age":"15"}
Run Code Online (Sandbox Code Playgroud)

预先感谢您的回复

Cag*_*bay 90

要使用Array的push函数,var必须是一个Array.

更改data{"name":"ananta","age":"15"}为以下内容:

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

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

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

..
Run Code Online (Sandbox Code Playgroud)

包含的Array项将是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" } );

因此,您可以迭代并始终​​获取属性,即使它们为空,null或未定义.

编辑

很酷的东西要知道:

var array = new Array();
Run Code Online (Sandbox Code Playgroud)

类似于:

var array = [];
Run Code Online (Sandbox Code Playgroud)

也:

var object = new Object();
Run Code Online (Sandbox Code Playgroud)

类似于:

var object = {};
Run Code Online (Sandbox Code Playgroud)

你也可以把它们结合起来:

var objectArray = [{}, {}, {}];
Run Code Online (Sandbox Code Playgroud)


Ror*_*san 9

您的data变量包含一个对象,而不是一个数组,并且对象没有该push函数作为错误状态.要做你需要的,你可以这样做:

data.country = 'IN';
Run Code Online (Sandbox Code Playgroud)

要么

data['country'] = 'IN';
Run Code Online (Sandbox Code Playgroud)


Pal*_*alo 7

还要确保变量的名称不是某种语言关键字。例如,以下内容会产生相同类型的错误:

var history = [];
history.push("what a mess");
Run Code Online (Sandbox Code Playgroud)

替换为:

var history123 = [];
history123.push("pray for a better language");
Run Code Online (Sandbox Code Playgroud)

可以正常工作。


小智 6

我想你把它设置为

var data = []; 
Run Code Online (Sandbox Code Playgroud)

但过了一段时间你把它变成了这样:

data = 'some thing which is not an array'; 
Run Code Online (Sandbox Code Playgroud)

then data.push('')将不起作用,因为它不再是数组。


rva*_*oni 5

只有当对象是一个数组时才能使用push方法:

var data = new Array();
data.push({"country": "IN"}).
Run Code Online (Sandbox Code Playgroud)

要么

data['country'] = "IN"
Run Code Online (Sandbox Code Playgroud)

如果它只是一个你可以使用的对象

data.country = "IN";
Run Code Online (Sandbox Code Playgroud)


vib*_*bhu 5

需要记住的一件事是“push work only with array[]not” object{}

如果你想像这样o在里面添加对象:n

a = {
   b:"c",
   D:"e",
   F: {
      g:"h",
      I:"j",
      k: {
         l:"m"
      }
   }
}

a.F.k.n = { o: "p" };
console.log(a);
Run Code Online (Sandbox Code Playgroud)