一个“问题”;少于;用于在循环中使用的函数。(JavaScript)

一个“问题”;少于;用于在循环中使用的函数。(JavaScript),javascript,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){

我试图编写一个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:1,2:0,3:3,4:10,5:15,6:55}

当遇到第一个值大于10的属性时,您正在从函数返回。这太早了,因为您希望在返回之前处理所有属性。只需将
returnlist
语句移动到
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;

if
语句之前的
for
循环中。

我的错误,这是我在测试是否可以在运行>10之前影响结果时遇到的问题。我已经把它删除了,但效果没有改善。谢谢泰德的帮助。“greaterThan10函数将测试第一个属性,并将其设置为0(如果大于10)并返回列表,或者将返回第一个属性值(如果不大于10)。它不再生成您报告的控制台输出。”帮助我确定我在循环中错误地放置了return和console.log命令。干杯有几秒钟你写的答案和我的一样,哈哈。Upvote@MrMins-谢谢。快速的手指有一次回报!(而不是让我难堪。):)