如何在对象的给定键上遍历数组?

时间:2018-11-13 21:50:27

标签: javascript arrays object for-loop

我被分配去创建一个函数,给定一个对象和一个键,该函数返回一个数组,该数组包含位于给定键处的数组中小于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]]);
    }

2 个答案:

答案 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)