如何在数组中获得斐波纳契数?

时间:2017-06-14 11:54:33

标签: javascript

如果输入= static返回[1,2,4],或者如果没有斐波那契数字返回[1,2],则[]应返回[1,1,2];

我知道您可以使用以下代码检查数字是否在斐波纳契序列中:

[1,2]

但我不知道如何实现它。感谢。

1 个答案:

答案 0 :(得分:0)

Array.from(new Set(arr))从原始数组中删除重复项

let newArr = [];定义新数组

for ( let i = 0; i < arrD.length; i++ )循环每个arrDarrD[i]来访问数组中的数字

if(fib(arrD[i])) { newArr.push(arrD[i]); }如果数字在斐波那契序列中,fib(arrD[i])将返回true,并且该数字将.push加入newArr

使用for loop

&#13;
&#13;
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;
&#13;
&#13;

或使用.filter

&#13;
&#13;
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;
&#13;
&#13;