【发布时间】:2019-08-01 19:48:29
【问题描述】:
我必须编写一个函数,该函数接受一个数字和一个对象,然后输入并返回一个已删除所有小于指定数字的数字的对象。
我在问题集中的前一个问题上完成了一个类似的功能,它执行相反的操作,removeNumbersGreaterThan。我所做的只是复制与上一个问题相同的代码,并将大于符号替换为小于符号,但由于某种原因,它并非在所有情况下都有效。
我已经尝试将其更改为小于或等于
function removeNumbersLessThan(num, obj) {
var i = 0;
while (i < Object.keys(obj).length) {
if (Object.values(obj)[i] < num) {
delete obj[Object.keys(obj)[i]]
}
i++;
}
return obj;
}
//test
var obj = {
a: 4,
b: 6,
c: 5,
d: 3
}
removeNumbersLessThan(7, obj)
console.log(obj)
//returns b:6 d:3 -- should return empty object
我注意到它无论如何都会返回第二个值。即使它小于 num 值。 在向我的对象添加更多元素后,我注意到它跳过了对象中的所有其他元素。 我还发现之前的相反功能起作用的原因是因为测试跳过了这些情况。在进一步调查后,它也有同样的问题。
【问题讨论】:
-
注意,最好使用for ... in 来遍历对象的键
标签: javascript object