我正在尝试编写一个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}
答案 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
循环内部。