Javascript Object push()函数

我有一个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不是一个函数。 我明白为什么它不是一个数组,但我能做什么呢?

push()是为数组而不是对象 ,所以使用正确的数据结构。

 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; 

对象不支持push属性,但也可以使用索引作为键保存它,

 var tempData = {}; for ( var index in data ) { if ( data[index].Status == "Valid" ) { tempData[index] = data; } } data = tempData; 

你必须使var tempData = new Array();

Push是一个数组函数。

Javascript编程语言支持函数式编程范例,所以您可以轻松使用这些代码。

 var data = [ {"Id": "1", "Status": "Valid"}, {"Id": "2", "Status": "Invalid"} ]; var isValid = function(data){ return data.Status === "Valid"; }; var valids = data.filter(isValid); 

做:

var data = new Array(); var tempData = new Array();
var data = new Array(); var tempData = new Array(); 
  tempData.push( data[index] ); 

我同意上面的正确答案,但….你仍然没有给你要添加到tempData的数据的索引值。 没有[index]值,整个数组将被添加。