我面临的问题是-删除具有false属性的对象中的值
false
var myObj={105:true,183:false,108:true,106:false}
我可以通过使用以下逻辑获得数组中的值:Object.keys(myObj)得到["105","183","108","106"]但是我需要一种方法来删除属性为false的值并生成["105",108"]。你能帮我吗?
Object.keys(myObj)
["105","183","108","106"]
["105",108"]
2ledvvac1#
数组中有对象的键。对其运行筛选器。
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"]
9bfwbjaz2#
我刚刚为您在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"]
如果你有任何问题请告诉我。
i5desfxk3#
要删除这些属性,可以使用以下算法:
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),您确实不想弄乱这些属性。
hasOwnProperty()
prototype
bvhaajcl4#
您需要使用for...in循环遍历对象
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"]
6ioyuze25#
ES6有一个单行的方法来做这个,这改变了原始数组!
Object.keys(myObj).map(key => !myObj[key] && delete myObj[key])
要避免这种情况,请使用扩展运算符
const filteredObj = [...myObj] Object.keys(filteredObj).map(key => !filteredObj[key] && delete filteredObj[key])
5条答案
按热度按时间2ledvvac1#
数组中有对象的键。对其运行筛选器。
9bfwbjaz2#
我刚刚为您在JSBin上遇到的问题创建了一个解决方案:Working Demo
请查看以下代码:
如果你有任何问题请告诉我。
i5desfxk3#
要删除这些属性,可以使用以下算法:
如果你只是对非
false
值的键感兴趣,你可以用途:hasOwnProperty()
检查是必要的,因为对象可能包含非用户属性(例如prototype
),您确实不想弄乱这些属性。bvhaajcl4#
您需要使用
for...in
循环遍历对象6ioyuze25#
ES6有一个单行的方法来做这个,这改变了原始数组!
要避免这种情况,请使用扩展运算符