js 基礎總結(經常使用的反轉)

js中的反轉

js中的反轉主要有如下三種,數字反轉,字符串反轉,數組的反轉數組

數組的反轉

var arr = [1,2,3,4,5];
arr = arr.reverse();
console.log(arr);

結果: [5,4,3,2,1]

字符串的反轉

先將字符串轉換爲數組,而後反轉數組,最後將數組轉合併爲字符串瀏覽器

var str = 'hello world';
str = str.split('').reduce(function(acc, v) {
    return v + acc
}, '');
console.log(str);

結果:'dlrow olleh'
兼容性:

因爲reduce()存在兼容性問題,>ie8的瀏覽器能夠很好的使用,可是ie8是個問題。spa

var str = 'hello world';
str = str.split('').reverse().join('');
console.log(str);

既然有這麼有這個兼容性更好的方法,爲何還要用reduce(),我想聰明的你應該很清楚那就是,運行的效率,前者的效率更高。我在本身電腦上跑的實例對比圖以下:prototype

reverse

數字的反轉

數字的反轉提及來也很簡單,就是將數字轉化爲字符串而後按照字符串的處理方式處理code

var num = 123456789;
num = num.toString().split('').reduce(function(acc, v)) {
    return v + acc
}, '');

console.log(num);
結果:987654321

針對以上3種狀況的一個綜合解決方案

function objReverse(obj) {
    if (Object.prototype.toString.call(obj) === '[object String]') {
        obj = obj.split('');
        return stringReverse(obj);
    } else if (Object.prototype.toString.call(obj) === '[object Number]') {
        obj = obj.toString().split('');
        return +stringReverse(obj);
    } else if (Object.prototype.toString.call(obj) === '[object Array]') {
        return obj.reverse();
    }

    function stringReverse (obj) {
        if(Array.prototype.reduce !== 'undefined') {
            return obj.reduce(function(acc, v) {
                return v + acc;
            }, '')    
        } else {
            return obj.reverse().join('');
        }
    }
}

歡迎吐槽 :)rem

相關文章
相關標籤/搜索