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