删除对象中的false值

时间:2015-06-01 10:17:29

标签: javascript arrays angularjs arraylist

我面临的问题是 - 在具有属性false的onject中删除值 这是对象

var myObj={105:true,183:false,108:true,106:false}

我可以使用以下逻辑获取数组中的值:

Object.keys(myObj)提供["105","183","108","106"] 但我需要一种方法来删除属性为false并生成为["105",108"]的值。你能帮帮我吗?

4 个答案:

答案 0 :(得分:6)

您拥有数组中对象的键。在其上运行过滤器。

var myObj={105:true,183:false,108:true,106:false};

var result = Object.keys(myObj).filter(function(x) { 
    return myObj[x] !== false; 
});
// result = ["105", "108"]

答案 1 :(得分:4)

我刚刚在JSBin上为您的问题创建了一个解决方案:Working Demo

请在下面找到代码:

var myObj={105:true,183:false,108:true,106:false};
var myArray = [];

function RemoveFalseAndTransformToArray () {
  for (var key in myObj) {
    if(myObj[key] === false) {
        delete myObj[key];
    } else {
        myArray.push(key);
    }
  }
}
RemoveFalseAndTransformToArray();
console.log("myObj: ", myObj);
console.log("myArray: ", myArray);
// result = ["105", "108"]

如果您有任何疑问,请告诉我。

答案 2 :(得分:1)

要删除这些属性,您可以使用此算法:

for (k in myObj)
{
  if (myObj.hasOwnProperty(k) && myObj[k] === false)
  {
      delete myObj[k];
  }
}

如果您只对非false值的键感兴趣,可以使用:

var keys = Object.keys(myObj).filter(function (k) {
  return myObj[k] !== false;
});

hasOwnProperty()检查是必要的,因为对象可能包含您真正不想搞砸的非用户属性(例如prototype)。

答案 3 :(得分:1)

您需要使用for...in循环

迭代对象
var myObj={105:true,183:false,108:true,106:false}
for(var key in myObj){
  if(myObj.hasOwnProperty(key) && myObj[key] == false){
   delete myObj[key];
  }
}

console.log(JSON.stringify(myObj)) //{"105":true,"108":true}
console.log(Object.keys(myObj)) //["105", "108"]