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]值,整个数组将被添加。