一个“问题”;少于;用于在循环中使用的函数。(JavaScript)
我试图编写一个for-in循环,在对象上循环,并将任何大于10的值更改为0一个“问题”;少于;用于在循环中使用的函数。(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){
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-谢谢。快速的手指有一次回报!(而不是让我难堪。):)