Get the last item in an array

前端 未结 30 3101
执念已碎
执念已碎 2020-11-22 05:28

Here is my JavaScript code so far:

var linkElement = document.getElementById(\"BackButton\");
var loc_array = document.location.href.split(\'/\');
var newT =         


        
30条回答
  •  不知归路
    2020-11-22 05:43

    Performance

    Today 2020.05.16 I perform tests of chosen solutions on Chrome v81.0, Safari v13.1 and Firefox v76.0 on MacOs High Sierra v10.13.6

    Conclusions

    • arr[arr.length-1] (D) is recommended as fastest cross-browser solution
    • mutable solution arr.pop() (A) and immutable _.last(arr) (L) are fast
    • solutions I, J are slow for long strings
    • solutions H, K (jQuery) are slowest on all browsers

    Details

    I test two cases for solutions:

    • mutable: A, B, C,

    • immutable: D, E, F, G, H, I, J (my),

    • immutable from external libraries: K, L, M,

    for two cases

    • short string - 10 characters - you can run test HERE
    • long string - 1M characters - you can run test HERE

    function A(arr) {
      return arr.pop();
    }
    
    function B(arr) {  
      return arr.splice(-1,1);
    }
    
    function C(arr) {  
      return arr.reverse()[0]
    }
    
    function D(arr) {
      return arr[arr.length - 1];
    }
    
    function E(arr) {
      return arr.slice(-1)[0] ;
    }
    
    function F(arr) {
      let [last] = arr.slice(-1);
      return last;
    }
    
    function G(arr) {
      return arr.slice(-1).pop();
    }
    
    function H(arr) {
      return [...arr].pop();
    }
    
    function I(arr) {  
      return arr.reduceRight(a => a);
    }
    
    function J(arr) {  
      return arr.find((e,i,a)=> a.length==i+1);
    }
    
    function K(arr) {  
      return $(arr).get(-1);
    }
    
    function L(arr) {  
      return _.last(arr);
    }
    
    function M(arr) {  
      return _.nth(arr, -1);
    }
    
    
    
    
    
    
    // ----------
    // TEST
    // ----------
    
    let loc_array=["domain","a","b","c","d","e","f","g","h","file"];
    
    log = (f)=> console.log(`${f.name}: ${f([...loc_array])}`);
    
    [A,B,C,D,E,F,G,H,I,J,K,L,M].forEach(f=> log(f));
    
    

    Example results for Chrome for short string

提交回复
热议问题