如果输入= static
返回[1,2,4]
,或者如果没有斐波那契数字返回[1,2]
,则[]
应返回[1,1,2]
;
我知道您可以使用以下代码检查数字是否在斐波纳契序列中:
[1,2]
但我不知道如何实现它。感谢。
答案 0 :(得分:0)
Array.from(new Set(arr))
从原始数组中删除重复项
let newArr = [];
定义新数组
for ( let i = 0; i < arrD.length; i++ )
循环每个arrD
,arrD[i]
来访问数组中的数字
if(fib(arrD[i])) { newArr.push(arrD[i]); }
如果数字在斐波那契序列中,fib(arrD[i])
将返回true,并且该数字将.push
加入newArr
使用for loop
let arr = [1,2,3,8,3,8];
let sqrt = (num) => { return num > 0 && Math.sqrt(num) % 1 === 0; };
let fib = (num) => { return sqrt(5 * Math.pow(num,2) + 4) || sqrt(5 * Math.pow(num,2) - 4); };
function fibArr(arr) {
arrD = Array.from(new Set(arr));
let newArr = [];
for ( let i = 0; i < arrD.length; i++ ) {
if(fib(arrD[i])) { newArr.push(arrD[i]); }
}
return newArr;
}
console.log(fibArr(arr));
&#13;
或使用.filter
let arr = [1,2,3,8,3,8];
let sqrt = (num) => { return num > 0 && Math.sqrt(num) % 1 === 0; };
let fib = (num) => { return sqrt(5 * Math.pow(num,2) + 4) || sqrt(5 * Math.pow(num,2) - 4); };
function fibArr(arr) {
arrD = Array.from(new Set(arr));
let newArr = arrD.filter(function(arrD){
return fib(arrD);
})
return newArr;
}
console.log(fibArr(arr));
&#13;