写一个数组,数组的项包含随机整数,或者数组。子数组中也可能包含随机整数和数组,子子数组也一样。设计一个函数(数组,测试函数),可以从这样一个数组中,找出所有满足测试函数的项并删除,返回结果为true的项。如fn(1,[ [2,3], 4], 6, [9,1], function(value){return value !=1}, 会返回[2,3,4,6,9]。

解决方案 »

  1.   


    function fn(int,arr){
    var temp = arr.concat.apply([],arr);
    return temp.filter(function(o){
    return o != int
    });
    }
    console.log(fn(1,[ [2,3], 4, 6, [9,1]]));
      

  2.   


    function fn(arr,fun) {
    var ra = [];
    JSON.stringify(arr,function(k,v){
    if(typeof v == "number" && fun(v))
    ra.push(v);
    return v;
    })
    return ra;
    }
    alert(fn([1,[2,3],4,6,[[1,7],9,1]],function(value){return value !=1}));
      

  3.   


    function concatArray(arr,_arr){
            var _arr=_arr||[];
            arr.forEach(function(item){
                if(Array.isArray(item)){
                    concatArray(item,_arr);
                }else{
                    _arr.push(item);
                }
            });
            return _arr;
        }
        function test(arr,fn){
            var _arr=concatArray(arr);
            return _arr.filter(item=>fn(item))
        }
        console.log(test([1,2,[3,4],[5,[6,7,[8,9]]]],item=>item%2==1));
      

  4.   

    你这个有bug哦 如果子数组还有子数组就不行了