该函数需要检查数组中是否有数字并返回第一个和最后一个数字。如果数组为空 - 它应该返回一个带有两个零的数组 [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/