javascript - 如何根据 javaScript 中的条件从对象中删除值

标签 javascript object

为什么这段代码运行没有错误,但没有从 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);

最佳答案

与 Python 不同,你不能只迭代对象的长度,因为 obj.length === undefined。您可以使用Object.keys()来获取键数组。然后你可以迭代它们:

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

或者您也可以使用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))

关于javascript - 如何根据 javaScript 中的条件从对象中删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52937365/

相关文章:

javascript - 如何避免react中重复的事件监听器?

javascript - 在两个函数之间传递变量

javascript - 如何在鼠标悬停时获取选定的索引?

javascript - 将对象保存在数组中以获取高分列表

javascript - d3折线图-对象挖掘

javascript - 如何检查从 Firebase 数据库获取的特定字符串以过滤接收到的数据?

delphi对象分配与:=

ios - 不会改变的 NSDictionary

php - 从存储在变量中的字符串中获取对象数据

javascript - 如何将 bluebird Promise 应用于我现有的 javascript 遍历和基于递归的逻辑?