简体   繁体   English

如何基于javaScript中的条件从对象中删除值

[英]How do I delete a value from an object based on criteria in javaScript

Why does this code run without errors, but not delete anything from obj? 为什么此代码运行时没有错误,却没有从obj中删除任何内容?

 function removeEvenValues(obj) { for (i=0; i < obj.length;++i) if (obj[i].value%2===0) delete obj[i]; return obj; } const obj = {a:1, b:2 ,c:3, d:4} const res = removeEvenValues(obj); console.log(res); 

Unlike Python you can't just iterate the length of an object because obj.length === undefined . 与Python不同,您不能仅仅因为obj.length === undefined迭代对象的长度。 You can use Object.keys() to get an array of keys. 您可以使用Object.keys()获取键数组。 Then you can iterate them: 然后,您可以迭代它们:

 obj = {a:1,b:2,c:3,d:4} function removeEvenValues(obj) { Object.keys(obj).forEach(key =>{ if (obj[key] % 2 ===0) delete obj[key]; }) return obj; } console.log(removeEvenValues(obj)) 

or you can also use for...in : 或者您也可以for...in使用for...in

 obj = {a:1,b:2,c:3,d:4} function removeEvenValues(obj) { for(let key in obj){ if (obj[key] % 2 ===0) delete obj[key]; } return obj } console.log(removeEvenValues(obj)) 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM