Javascript Object push() function

2022-08-30 05:00:33

我有一个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


答案 1

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;

答案 2

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

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 –