我正在尝试推送
data.push({"country": "IN"});
作为json字符串的新id和值。但它会出现以下错误
Uncaught TypeError: data.push is not a function
data{"name":"ananta","age":"15"}
预先感谢您的回复
答案 0 :(得分:76)
要使用数组的推送功能,你的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"});
..
包含的Array Items将是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();
类似于:
var array = [];
此外:
var object = new Object();
类似于:
var object = {};
你也可以将它们结合起来:
var objectArray = [{}, {}, {}];
答案 1 :(得分:9)
您的data
变量包含一个对象,而不是一个数组,并且对象没有push
函数作为错误状态。要做你需要的,你可以这样做:
data.country = 'IN';
或者
data['country'] = 'IN';
答案 2 :(得分:5)
只有当对象是数组时才能使用push方法:
var data = new Array();
data.push({"country": "IN"}).
OR
data['country'] = "IN"
如果它只是一个对象,你可以使用
data.country = "IN";
答案 3 :(得分:5)
还要确保变量的名称不是某种语言关键字。 例如,以下内容会产生相同类型的错误:
var history = [];
history.push("what a mess");
替换为:
var history123 = [];
history123.push("pray for a better language");
按预期工作。
答案 4 :(得分:1)
试用此代码$ 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);
答案 5 :(得分:1)
确保仅将推送到数组中 如果它们是未捕获的TypeError错误:data.push 不是函数** 然后检查数据的类型 你可以通过 consol.log(数据)来做到这一点 希望这会有所帮助
答案 6 :(得分:1)
要记住的一件事是推操作仅适用于array []而不适用于object {}。
如果要在n内部添加Like对象o
a={ b:"c",
D:"e",
F: {g:"h",
I:"j",
k:{ l:"m"
}}
}
a.F.k.n = { o: "p" };
a.F.k.n = { o: "p" };
console.log(a);
答案 7 :(得分:0)
我想您设置了
var data = [];
但是有些时候你成功了
data = 'some things';
然后
data.push('')
不起作用。