【问题标题】:Homework assistance [duplicate]家庭作业协助[重复]
【发布时间】:2021-06-20 03:54:52
【问题描述】:

正在学习 Udemy 课程,需要帮助解决这个问题。玩了大约一天,我还是个新手,正在努力掌握 JavaScript。

这是问题。

请编写一个名为“lastElement”的函数,该函数出现在单个数组参数中。该函数应返回数组的最后一个元素(不删除该元素)。如果数组为空,则函数应返回“null”。

这是我到目前为止所写的内容,它可以在我的带有 Visual Studio Code 的歌剧浏览器上运行。也适用于 Chrome,但我想知道我的导师希望我如何得到正确的答案。无论如何,这是我的答案。

function lastElement(arr) {
    const jacob = arr[arr.length - 1];
    if (arr[arr.length - 1] >= 0) {
    console.log(jacob);
} else if (arr.length <= 0) {
        console.log(null);
    }
}
// These are the values i am checking.

1 |    lastElement([3,5,7]); //7
2 |    lastElement([1]); //1
3 |    lastElement([]); //null"

【问题讨论】:

  • 看起来该任务让您从函数中返回一个值,而不仅仅是将其记录到控制台。
  • 我不想只是发布解决方案,而是提出一些可能有帮助的问题。检查你的功能,是returning 吗?您将如何检查数组是否为空(然后将其与解决方案中的 if/else 进行比较)?
  • 请注意您的条件是错误的if (arr[arr.length - 1] &gt;= 0)。这会检查最后一个数组元素是否为&gt;= 0,而不是数组是否为非空。
  • 没有理由关闭这个问题,因为 OP 自己尝试并提出了它。

标签: javascript


【解决方案1】:

您可以先检查长度,如果为零则返回null,因为这比获取元素然后检查长度要短。

if (arr.length === 0) return null;

对于所有其他情况,返回最后一个元素。这里不需要else 语句,因为第一个条件是return 语句。

return arr[arr.length - 1];

function lastElement(array) {
    if (array.length === 0) return null;
    return array[array.length - 1];
}

console.log(lastElement([3, 5, 7])); //    7
console.log(lastElement([1]));       //    1
console.log(lastElement([]));        // null

【讨论】:

  • 为什么不返回 array.at(-1) ?
【解决方案2】:

您的讲师希望您的函数实际上是 return 最后一个元素,而不仅仅是 console.log 它:

function lastElement(arr) {
  return Array.isArray(arr) && arr.length ? arr[arr.length - 1] : null;
}

console.log(lastElement([3, 5, 7])); // 7
console.log(lastElement([1])); // 1
console.log(lastElement([])); // null

返回值有用的原因是你可以例如将返回值分配给变量,或将其传递给另一个函数。

后者是我的示例代码中实际发生的情况:

console.log(lastElement([1]));

像这样执行:

lastElement([1]) // this is called first and returns 1

然后将return值1传递给console.log:

console.log(1)

关于我使用的语法,称为三元表达式,它在功能上与

if (Array.isArray(arr) && arr.length) { return arr[arr.length - 1]; }
else { return null; }
// same as
return Array.isArray(arr) && arr.length ? arr[arr.length - 1] : null;

【讨论】:

  • 第一条评论回答了我的问题,谢谢大家的回复。
  • 为什么不 arr.at(-1) ?
猜你喜欢
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多