>编写一个函数,用于查找数组中是否有 3 个递增的连续数字。 如果有,则返回 1。否则,返回 0。
function tripleThreat(arr) {
if (arr.find((i) => arr[i] + arr[i + 1] + arr[i + 2])) {
return 1
}
return 0
}
tripleThreat([3,1,2,3]);
示例输出
[...34,35,36...]
会回来1
我将如何使用array.find()
方法编写此内容?
有些测试通过,有些则不通过。
现在,如果我输入[3, 1, 2, 3]
,结果是0
而不是1
。
使用Array.find
的第二个参数分别检查接下来的两个数字是否大于当前和电流之后的数字。不要忘记检查数组是否足够长,以便在当前索引之后再有两个索引。
如果找不到任何匹配的元素,Array.find
返回undefined
,因此如果它返回undefined
,则您知道不存在此类匹配,应返回 0。否则,返回 1。
function tripleThreat(arr) {
if (arr.find((v,i) =>
arr.length > i+2
&& v < arr[i+1]
&& arr[i+1] < arr[i+2]) === undefined) {
return 0;
}
return 1;
}
console.log(tripleThreat([3,1,2,3]));
console.log(tripleThreat([3,1,3,3]));
console.log(tripleThreat([0,1,2,2]));
console.log(tripleThreat([1,2,2.1,3]));
如果需要检查值是否为连续整数,请检查是否等于当前值加一或二:
function tripleThreat(arr) {
if (arr.find((v,i) =>
arr.length > i+2
&& v + 1 === arr[i+1]
&& v + 2 === arr[i+2]) === undefined) {
return 0;
}
return 1;
}
console.log(tripleThreat([3,1,2,3]));
console.log(tripleThreat([3,1,3,3]));
console.log(tripleThreat([0,1,2,4]));
console.log(tripleThreat([1,2,2.1,3]));