使用for in循环时出现“小于”功能的问题。 (JavaScript)

时间:2018-08-13 01:50:59

标签: javascript

我正在尝试编写一个for in循环,该循环遍历对象并将大于10的任何值更改为0。

    var obj = {
      one:  1,
      two:  25,
      three:  3,
      four:  10,
      five:  15,
      six:  55,
    }

function greaterThan10(list)
{
  for (var prop in list){
    if (list[prop] > 10){
      list[prop] = 0;
      console.log(list)
      return list;
     }
}
}
greaterThan10(obj)

控制台输出:

{一:1,二:0,三:3,四:10,五:15,六:55}

1 个答案:

答案 0 :(得分:1)

当您遇到第一个大于10的属性时,您将从函数中返回。这太早了,因为您要在返回之前处理所有属性。只需将return list语句移到for循环之后即可。

function greaterThan10(list)
{
  for (var prop in list){
    if (list[prop] > 10){
      list[prop] = 0;
     }
  }
  console.log(list)
  return list;
}

此外,为了防止更复杂的对象作为参数传递,您可能要进行检查。只需把这一行:

if (!list.hasOwnProperty(prop)) continue;

for语句之前的if循环内部。