Javascript 如何在对象的给定键处循环数组?

Javascript 如何在对象的给定键处循环数组?,javascript,arrays,object,for-loop,Javascript,Arrays,Object,For Loop,分配给我的任务是创建一个函数,给定一个对象和一个键,该函数返回一个数组,该数组包含位于给定键的数组中小于100的所有元素。我想到了这个: function getElementsLessThan100AtProperty(obj, key) { var lessThan100 = []; var targetedKey = obj[key]; if (targetedKey === undefined) { return []; } for (i = 0; i <

分配给我的任务是创建一个函数,给定一个对象和一个键,该函数返回一个数组,该数组包含位于给定键的数组中小于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;
}
函数getElementsLessThan100AtProperty(obj,键){ var lessThan100=[]; var targetedKey=obj[key]; if(targetedKey==未定义){ 返回[]; } 对于(i=0;i 现在这是可行的,但我想知道为什么我的原始代码没有。我试图通过编写下面的代码在给定属性的数组上循环,但没有成功。为什么我不能这样做?还有,有人能告诉我如何清理这个代码,使它更短吗

for (i = 0; i <obj[key].length; i++) {
    if (obj[key[i]].length < 100) {
      lessThan100.push(obj[key[i]]);
    }

对于(i=0;i,因为
obj[key[i]]
必须是
obj[key][i]
,另外,您可以检查长度是否小于100,这可能不是您的意图

整个代码可以写成:

 const getLessThanHundred = (obj, key) =>
   obj[key].filter(it => it < 100);
const getlessthanhund=(对象,键)=>
obj[key].filter(it=>it<100);

在修改后的代码中,您正在检查数组中项目的长度是否小于100,而不是项目的值是否小于100。您应该检查值(即<100;而不是.length<100)

哇,非常感谢。通常,当我犯下如此明显的错误时,我会在花一些时间远离问题并用新的眼光重新审视后发现它。我每天都会回到这个问题上,但我没有发现。如果属性obj[key]不存在。我必须使用if语句吗?或者有其他方法吗?你可以新建一个空数组,然后将项目推入其中(如果存在)。最后,返回数组。如果没有添加任何内容,你将返回新建的空数组。哇。我还不熟悉该技术,但它确实有效。我刚刚开始学习从hackreactor开始编写代码并进行训练营面试培训计划,因此我对javascript仍然非常不熟悉。谢谢您的帮助。@sheridan很高兴提供帮助:)