我有一个javascript对象(实际上我是通过ajax请求获取数据的):
var data = {};
我在其中添加了一些东西:
data[0] = { "ID": "1"; "Status": "Valid" }
data[1] = { "ID": "2"; "Status": "Invalid" }
现在我想删除所有状态为无效的对象(但保持所有对象的顺序不变):
var tempData = {};
for ( var index in data ) {
if ( data[index].Status == "Valid" ) {
tempData.push( data );
}
}
data = tempData;
在我看来,所有这些都应该可以工作,但我得到了一个错误,tempData.push
不是一个函数。我理解为什么它不同于数组,但是我还能做什么呢?
发布于 2012-01-19 20:15:24
push()
is for arrays,而不是objects,所以使用正确的数据结构。
var data = [];
// ...
data[0] = { "ID": "1", "Status": "Valid" };
data[1] = { "ID": "2", "Status": "Invalid" };
// ...
var tempData = [];
for ( var index=0; index<data.length; index++ ) {
if ( data[index].Status == "Valid" ) {
tempData.push( data );
}
}
data = tempData;
发布于 2016-01-14 00:31:36
对象不支持push属性,但也可以使用index作为key来保存。
var tempData = {};
for ( var index in data ) {
if ( data[index].Status == "Valid" ) {
tempData[index] = data;
}
}
data = tempData;
我认为如果移除状态为无效的对象会更容易,方法是。
for(var index in data){
if(data[index].Status == "Invalid"){
delete data[index];
}
}
最后,您不需要创建var temp -
发布于 2012-01-19 20:16:03
您必须创建var tempData = new Array();
Push是一个数组函数。
https://stackoverflow.com/questions/8925820
复制相似问题