删除对象中的错误值
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+以上是关于删除对象中的错误值的主要内容,如果未能解决你的问题,请参考以下文章
通过 INDEX 更新和删除 userDefaults 中的对象