简体   繁体   English

一些JavaScript代码的优化

[英]optimization of some javascript code

the follwoing code 以下代码

$.concat||$.extend({concat:function(b,c){var a=[];for(x in arguments)a=a.concat(arguments[x]);return a}}); 

$(document).ready(function(){

    //document ready

    var solobroadcast_template =$("#hidden_solobroadcast").html()
    var b = new Array();   
    b.push([{"indexname": "green", "url":"#Green"}])
    b.push([{"indexname": "red", "url":"#red"}])    
   //....... more elements come here 

   //how can we know b[] while the array b contain unknown keys
   var bindexes = $.concat(b[0],b[1]);   



    var convertedvars = {
        name: "sam",
        indexes: function (){return bindexes}

    }


    var output = Mustache.render(solobroadcast_template, convertedvars);
    document.getElementById("content").innerHTML = output;
});

as it runs on http://jsfiddle.net/mshannaq/ZqqMe/6/ 因为它在http://jsfiddle.net/mshannaq/ZqqMe/6/上运行

as you can see the variable bindexes = $.concat(b[0],b[1]); 如您所见,变量bindexes = $ .concat(b [0],b [1]); and in this case its static for b[0] and b[1] but what shloud we do if we want to to cocat all the b array size . 在这种情况下,它对于b [0]和b [1]来说是静态的,但是如果我们要合并所有b数组size,我们该做些什么。 imagin that b array size may be 1000 element and its dynamic. 想象一下b数组的大小可能是1000个元素,并且它是动态的。

Just add objects to the array instead adding the array: 只需将对象添加到数组即可,而不是添加数组:

b.push({"indexname": "green", "url":"#Green"})
b.push({"indexname": "red", "url":"#red"})

var convertedvars = {
    name: "sam",
    indexes: function (){return b;}
}

Then you already have an array of what you need, instead of concatenating all your smaller arrays. 然后,您已经有了所需的数组,而不是连接所有较小的数组。

Demo: http://jsfiddle.net/ZqqMe/11/ 演示: http//jsfiddle.net/ZqqMe/11/

in this case to fix this we use 在这种情况下,我们使用

 var bindexes = [];
 bindexes = bindexes.concat.apply(bindexes, b);

insted of using 安装使用

var bindexes = $.concat(b[0],b[1]);

and now what ever how much b array elements they will be mereged 现在无论将要调整多少个b数组元素

http://jsfiddle.net/mshannaq/ZqqMe/8/ http://jsfiddle.net/mshannaq/ZqqMe/8/

as says on Merge/flatten an array of arrays in JavaScript? 在JavaScript中合并/展平数组中的数组?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM