首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript If条件语句不屏蔽输入值

JavaScript If条件语句不屏蔽输入值
EN

Stack Overflow用户
提问于 2018-08-12 04:25:08
回答 2查看 47关注 0票数 0

我正在解决一个训练营前的问题。我将获取一个对象并删除所有具有奇数值的属性,然后返回该对象。为什么奇数值没有被过滤掉?

代码语言:javascript
复制
/*
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}
EN

回答 2

Stack Overflow用户

发布于 2018-08-12 04:29:01

它们不会被删除,因为对于您拥有的条件,您构造的If语句的计算结果不是true

我认为在第一种情况下,您缺少一个typeof。您的if语句应如下所示:

代码语言:javascript
复制
if ((typeof obj[values]) === 'number' && obj[values] % 2 !== 0) ...

修复后,您的代码就可以正常运行了:

代码语言:javascript
复制
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))

票数 3
EN

Stack Overflow用户

发布于 2018-08-12 04:31:16

只需使用以下命令:

代码语言:javascript
复制
function removeOddValues(obj) {
  for (var values in obj) {
      if (typeof obj[values] === 'number' && obj[values] % 2 !== 0) 
           delete obj[values]           
  }   
  return obj;
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51803480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档