我面临的问题是 - 在具有属性false
的onject中删除值
这是对象
var myObj={105:true,183:false,108:true,106:false}
我可以使用以下逻辑获取数组中的值:
Object.keys(myObj)
提供["105","183","108","106"]
但我需要一种方法来删除属性为false并生成为["105",108"]
的值。你能帮帮我吗?
答案 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"]