/*
Array Object
refer to: http://www.w3schools.com/jsref/jsref_obj_array.asp
*/
//最快的
直接 = 复制操作是最快的。快一个数量级
arr = arrCopy
//1.by slice
var arr = [1,2,3],copyArr;
copyArr = arr.slice();
//2.by concat
var arr = [1,2,3],copyArr;
copyArr = arr.concat();
//3.loop
var arr =[1,2,3],copyArr = []
for(var i = 0; i = arr.length; i++)
coypArr[i] = arr[i];
//IE 下 的执行效率为 slice > concat > loop
//Firefox 下执行效率一致 slice = concat = loop
//chrome 下执行效率 concat > slice > loop
//safari 执行效率 slice >~~ concat > loop
//>~~ 几乎相等
//>~ 相差不大
/*
总体来说 数组复制 不要选择 loop 进行(除非必要),除chorme下 concat 快于 slice外,其他的全部为 slice最快。
*/
/*
function: concat()
arguments counts: no limitation.
arguments: array or string
syntax: array.concat(string,string....);
array.concat(string,array....);
describe: base on current array generate a new array.
基于当前数组创建新数组
*/
//example:
var arr = ["black","white","red"], arrCopy;
arrCopy = arr.concat("green",["array_green","array_red"],"yellow");
//result:
arrCopy : black,white,red,green,array_green,array_red,yellow
/*
function: slice()
arguments counts:1 or 2
arguments: int (;var)
syntax: array.slice(start,end);
array.slice(start);
describe: return specified range of a string
返回指定范围的数组
*/
var arr = ["black","white","red","green"], arrCopy;
arrCopy = arr.slice(1);
//if argument is one,will return to the end as default
//if the range is bigger than the array's maximum length,it will return a string with length of 0,like ''
//result: white,red,green;
arrCopy = arr.slice(1,2);
//result:white,red;
/*
function: splice()//会影响原始数组
arguments counts: index,howmany,items....
syntax: array.splice(index,howmany,item1,.....,itemX)
describe: splice array; 没有返回值操作当然数组
reference: http://www.w3schools.com/jsref/jsref_splice.asp
*/
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,0,"Lemon","Kiwi");
//result:"Banana", "Orange", "Apple","Lemon","Kiwi","Mango"
fruits.splice(1,2,"Lemon","Kiwi");
//result:"Banana","Lemon","Kiwi","Mango"