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

时间:2018-10-22 20:32:10

标签: 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);

1 个答案:

答案 0 :(得分:1)

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