我正在解决一个训练营前的问题。我将获取一个对象并删除所有具有奇数值的属性,然后返回该对象。为什么奇数值没有被过滤掉?
/*
Write a function called "removeOddValues".
Given an object, "removeOddValues" removes any properties whose valuse are odd numbers.
var obj = {
a: 2,
b: 3,
c: 4
};
removeOddValues(obj);
console.log(obj); // --> { a: 2, c: 4 }
*/
function removeOddValues(obj) {
for (var values in obj) {
if (obj[values] === 'Number' && obj[values] % 2 !== 0) {
delete obj[values]
}
}
return obj;
};
var obj = {
a: 2,
b: 3,
c: 4
};
removeOddValues(obj);
output:
{a: 2, b: 3, c: 4}
发布于 2018-08-12 04:29:01
它们不会被删除,因为对于您拥有的条件,您构造的If语句的计算结果不是true
。
我认为在第一种情况下,您缺少一个typeof
。您的if语句应如下所示:
if ((typeof obj[values]) === 'number' && obj[values] % 2 !== 0) ...
修复后,您的代码就可以正常运行了:
function removeOddValues(obj) {
for (var values in obj) {
if ((typeof obj[values]) === 'number' && obj[values] % 2 !== 0) {
delete obj[values]
}
}
return obj;
};
var obj = {
a: 2,
b: 3,
c: 4
};
console.log(removeOddValues(obj))
发布于 2018-08-12 04:31:16
只需使用以下命令:
function removeOddValues(obj) {
for (var values in obj) {
if (typeof obj[values] === 'number' && obj[values] % 2 !== 0)
delete obj[values]
}
return obj;
};
https://stackoverflow.com/questions/51803480
复制相似问题