JS提问,请问怎样提取一个类数组的所有数字?

就是下面这样一个类数组,我要怎样才能提取里面所有的数字呢?

var arr =[1,2,3,{},[5,6],{},"abc" ,true, [{}, {name:20}]]

<script>
    var arr = [1, 2, 3, {}, [5, 6], {}, "abc", true, [{}, { name: 20 }]]

    function type(obj) {
        var o = {};
        if (o.toString.call(obj) == '[object Object]') return 1;
        if (o.toString.call(obj) == '[object Array]') return 2;
        return 0;
    }

    var arrNum = [];
    function getNumber(o) {
        console.log(typeof o)
        var typename = typeof (o);
        if (typename == 'object') {
            var t = type(o);
            if (t) {
                if (t == 1) for (var attr in o) getNumber(o[attr]);
                else for (var v of o) getNumber(v);
            }
        }
        else if (typename == 'number') arrNum.push(o);
    }
    getNumber(arr);
    alert(arrNum.join('\n'))
</script>

 

var arrStr = JSON.stringify(arr);

arrStr.match(/\d+(.\d+)?/g); //返回数字的数组(包括整数或小数)