Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript问题协助(培训中的学生)_Javascript_For Loop_Object - Fatal编程技术网

Javascript问题协助(培训中的学生)

Javascript问题协助(培训中的学生),javascript,for-loop,object,Javascript,For Loop,Object,如果有人能够帮助解释我提交的代码不正确的原因,以及提供的正确代码工作的原因,我将不胜感激 问题/说明: function getElementsGreaterThan10AtProperty(obj, key) { let newArr = []; if (Array.isArray(obj[key]) === false || obj[key] !== [] || obj[key] === undefined){ return []; } for

如果有人能够帮助解释我提交的代码不正确的原因,以及提供的正确代码工作的原因,我将不胜感激

问题/说明:

function getElementsGreaterThan10AtProperty(obj, key) {
    let newArr = [];
    if (Array.isArray(obj[key]) === false || obj[key] !== [] || obj[key] === undefined){
        return [];
    }
    for (let i in obj[key]){
        if (i > 10){
            newArr.push(i);
        }
    }
    return newArr;
}
> function getElementsGreaterThan10AtProperty(obj, key) {
  var greaterThan10 = [];
  for (var property in obj) {
    if (property === key) {
      for (var i = 0; i < obj[key].length; ++i) {
        if (obj[key][i] > 10) {
          greaterThan10.push(obj[key][i]);
        }
      }
    }
  }
  return greaterThan10;
}
编写一个名为“GetElementsCreateThan10AtProperty”的函数

给定一个对象和一个键,“GetElementsCreateThan10ATProperty” 返回包含数组中元素的数组,位于 给定的键,大于10

注:

如果数组为空,则应返回空数组

如果数组不包含大于10的元素,则应返回 空数组

如果给定键处的属性不是数组,则应返回 空数组

如果键上没有属性,它应该返回一个空数组

我的代码(不满足所有5项通过要求):

function getElementsGreaterThan10AtProperty(obj, key) {
    let newArr = [];
    if (Array.isArray(obj[key]) === false || obj[key] !== [] || obj[key] === undefined){
        return [];
    }
    for (let i in obj[key]){
        if (i > 10){
            newArr.push(i);
        }
    }
    return newArr;
}
> function getElementsGreaterThan10AtProperty(obj, key) {
  var greaterThan10 = [];
  for (var property in obj) {
    if (property === key) {
      for (var i = 0; i < obj[key].length; ++i) {
        if (obj[key][i] > 10) {
          greaterThan10.push(obj[key][i]);
        }
      }
    }
  }
  return greaterThan10;
}
我的代码结果:

function getElementsGreaterThan10AtProperty(obj, key) {
    let newArr = [];
    if (Array.isArray(obj[key]) === false || obj[key] !== [] || obj[key] === undefined){
        return [];
    }
    for (let i in obj[key]){
        if (i > 10){
            newArr.push(i);
        }
    }
    return newArr;
}
> function getElementsGreaterThan10AtProperty(obj, key) {
  var greaterThan10 = [];
  for (var property in obj) {
    if (property === key) {
      for (var i = 0; i < obj[key].length; ++i) {
        if (obj[key][i] > 10) {
          greaterThan10.push(obj[key][i]);
        }
      }
    }
  }
  return greaterThan10;
}
✗ 它应该返回一个数组,其中包含大于的所有元素 位于关键点的阵列中的10错误: 预计[]将完全相等[20,40]

✓ 如果数组中没有更大的元素,它应该返回一个空数组 超过10

✓ 如果数组为空,则应返回空数组

✓ 如果属性不是数组,则应返回空数组

✓ 如果属性不存在,则应返回空数组

正确的代码(在线找到):

function getElementsGreaterThan10AtProperty(obj, key) {
    let newArr = [];
    if (Array.isArray(obj[key]) === false || obj[key] !== [] || obj[key] === undefined){
        return [];
    }
    for (let i in obj[key]){
        if (i > 10){
            newArr.push(i);
        }
    }
    return newArr;
}
> function getElementsGreaterThan10AtProperty(obj, key) {
  var greaterThan10 = [];
  for (var property in obj) {
    if (property === key) {
      for (var i = 0; i < obj[key].length; ++i) {
        if (obj[key][i] > 10) {
          greaterThan10.push(obj[key][i]);
        }
      }
    }
  }
  return greaterThan10;
}
>函数GetElementsCreateThan10AtProperty(obj,键){
var大于10=[];
for(obj中的var属性){
如果(属性===键){
对于(变量i=0;i10){
大于10.按(obj[键][i]);
}
}
}
}
回报大于10;
}

我只是不明白为什么我的不起作用,为什么逻辑是错误的。我不理解正确代码的逻辑。非常感谢您的帮助

中,让i输入obj[key]
变量
i
将不是值(例如20),而是索引。 因此,您可以通过
obj[key][i]
获得值

Pointy在他的评论中也是正确的,
obj[key]!==[]
没有意义,应该删除


这也是一个很好的例子,其中函数代码更好,因为可以使用for循环来代替:
returnobj[key].filter(val=>val>10)

更改此
obj[键]!==[]
!obj[键]。长度

obj[键]!=[]
始终是
真的
。而且“正确”的代码是不必要的复杂;对于
循环,没有指向外部
的点。