[英]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.