首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript对象push()函数

Javascript对象push()函数
EN

Stack Overflow用户
提问于 2012-01-19 20:13:00
回答 7查看 722.7K关注 0票数 112

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

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 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;
票数 144
EN

Stack Overflow用户

发布于 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 -

票数 22
EN

Stack Overflow用户

发布于 2012-01-19 20:16:03

您必须创建var tempData = new Array();

Push是一个数组函数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8925820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档