javascript - 这个函数有什么问题吗?不返回我指定的内容

标签 javascript function return typeof

该函数需要检查数组中是否有数字并返回第一个和最后一个数字。如果数组为空 - 它应该返回一个带有两个零的数组 [0,0],如果数组中的第一个或最后一个元素不是数字 - 它也应该返回两个零。我完成了一个功能,但无法让它工作。

完成了一个功能。

function checkArrEl(arr) {
    let result = [];

    if ((arr.length == 0 ) || (typeof arr[0] || typeof arr[arr.length-1] !== 'number')) {
        result = [0,0];
    } else result.push(arr.shift(), arr.pop())

    return result;
}
  console.log(checkArrEl(['a',1,2,3,4,'b']));
  console.log(checkArrEl([]))
  console.log(checkArrEl([1,2,3,4,5]));

最佳答案

我假设期望 (typeof arr[0] || typeof arr[arr.length-1] !== 'number') 如果最后一个元素的第一个元素返回 true数组的类型不是 number

第一个 typeof 没有与之配对的比较运算符。在 arr=['a',1,2,3,4,'b'] 的情况下,您的表达式的计算结果为 'string' || false,每次都会评估 true。

为第一个 typeof 提供一个比较运算符,以便您的逻辑能够正确计算。以下 if 语句可能更适合您。

if ((arr.length == 0) || (typeof arr[0] != 'number' || typeof arr[arr.length-1] != 'number'))

控制台现在记录:

[0, 0]
[0, 0]
[1, 5]

关于javascript - 这个函数有什么问题吗?不返回我指定的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57877916/

相关文章:

php - 如何在自定义 php 函数中使用 mysqli_fetch_assoc?

java - 如果出现问题,我怎样才能返回到程序的开头?

.net - F#:函数中有更多返回点,如何处理?

javascript - 如何在全局scss文件中实现绝对路径? VueJS

javascript - IE11/Edge 不遵守 DOM 中的链接/CSS 顺序

javascript - 为什么 localStorage 中的更改直到刷新才更新?

C/C++ 错误 : Pointer variable undefined inside function

javascript - (Ruby、Rails、Javascript)拖放操作不会干扰服务器……?

javascript - 如何退出 Javascript 函数内的循环

javascript - JQuery Post 请求在 IE 7 中失败