删除对象中的错误值

Posted

技术标签:

【中文标题】删除对象中的错误值【英文标题】:Remove false values in object 【发布时间】:2015-08-14 18:15:15 【问题描述】:

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

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

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

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

【问题讨论】:

迭代属性并删除它们 【参考方案1】:

我刚刚为您在 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】:

您需要使用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"]

【讨论】:

【参考方案3】:

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

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)。

【讨论】:

【参考方案4】:

你有一个数组中的对象的键。对其运行过滤器。

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"]

【讨论】:

注意:这个答案需要IE9+

以上是关于删除对象中的错误值的主要内容,如果未能解决你的问题,请参考以下文章

尝试从数组中的值中删除基于 MKMap 的引脚

通过 INDEX 更新和删除 userDefaults 中的对象

从数据框列中的字符串值中删除字符

从 CLOB ListAgg 值中删除 Oracle SQL 中的 HTML 代码

如何在perl中删除哈希值中的重复值?

JavaScript:如何从 JSON 字符串中删除除值中的空格之外的所有空格?