说下javascript中的concat, 这家伙害得我很惨呀。
话说:concat可以连接数组,这个功能在js运用中功不可没。
var arr=['z','s','k']; var arr02=['xx']; var b=arr.concat(arr02);
这个代码运行结果b=['z','s','k','xx'] , 很好呀,很不错呀,就是应该这样的。 没错地。 接下来:
var arr=['z','s','k']; arr['name']='zsk'; //添加了这行代码 var arr02=['xx']; var b=arr.concat(arr02);
上面一段代码运行结果 b=['z','s','k','xx'] , 有问题吗,没有问题吗? 当然有问题, 这行代码:
arr['name']='zsk'; //添加了这行代码
给数组arr添加了一个键为name值为zsk的元素。 用了concat方法这个就没了。 我勒个去,concat方法把数组中非数字索引元素给去了,谁叫你这么做的。
1. concat方法会把相连接的数组中非数字索引的元素给删了。
附: 组数组添加非数字键的元素如:arr['name']='zsk' , arr数组的length属性没有变,即没有加一。
所以用for(var i = 0; i < arr.length; i++){...} 方法 无法取得非数字键的元素即arr['name'] 。 可以用 for(var i in arr){.....} 可以得到。