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