我被分配去创建一个函数,给定一个对象和一个键,该函数返回一个数组,该数组包含位于给定键处的数组中小于100的所有元素。我想到了: >
function getElementsLessThan100AtProperty(obj, key) {
var lessThan100 = [];
var targetedKey = obj[key];
if (targetedKey === undefined) {
return [];
}
for (i = 0; i < targetedKey.length; i++) {
if (targetedKey[i] < 100) {
lessThan100.push(targetedKey[i]);
}
}
return lessThan100;
}
现在这可行,但是我想知道为什么我的原始代码不起作用。我试图通过编写下面的代码在给定的属性上遍历数组,但是没有用。我为什么不能这样做?另外,有人会告诉我如何清理此代码以使其更短吗?
for (i = 0; i <obj[key].length; i++) {
if (obj[key[i]].length < 100) {
lessThan100.push(obj[key[i]]);
}
答案 0 :(得分:2)
由于obj[key[i]]
必须为obj[key][i]
,因此您还要检查长度是否小于100,这可能不是您的意图。
整个代码可以写为:
const getLessThanHundred = (obj, key) =>
obj[key].filter(it => it < 100);
答案 1 :(得分:0)
在修改后的代码中,您正在检查数组中该项的 length 是否小于100,而不是如果该项的 value 小于100。您应该检查 value (即<100;而不是.length <100)