JavaScript内置对象之Array的使用小结
数组的创建方式:
1.字面量:
放置一个数值时,就是一个数据。
vararr=[6];
2.构造函数:
放置一个数据时,表示长度或数据的个数,空表示undefined。
vararr=newArray(6);
建议:Array作为构造函数,行为很不一致。因此,不建议使用它生成新数组,直接使用数组字面量是更好的做法。
数组的操作:
1.push();
用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。
注意,该方法会改变原数组
vararr=[1,2,3]; console.log(arr.push("hello"));//4 console.log(arr);//[1,2,3,"hello"]---原数组改变 console.log(arr.push("a","b"));//6 console.log(arr);//[1,2,3,"hello","a","b"]---原数组改变
2.pop();
用于删除数组的最后一个元素,并返回该元素。对空数组使用pop方法,不会报错,而是返回undefined。
注意,该方法会改变原数组
vararr=[1,2,3]; console.log(arr.pop());//3 console.log(arr);//[1,2]→原数组改变
3.concat();
合并数组。
注意,该方法不会改变原数组
vararr1=[1,2,3] vararr2=arr1.concat(); console.log(arr1);//[1,2,3]→→原数组 console.log(arr1===arr2);//false console.log(arr2);//[1,2,3]→→原数组的副本 console.log(arr1.concat("hello","world")); //[1,2,3,"hello","world"] console.log(arr1.concat(["a","b"],[[3,4],{"name":"admin"}])); //[1,2,3,"a","b",[3,4],{"name":"admin"}] console.log(arr1);//[1,2,3]→→原数组未改变
4.shift();
用于删除数组的第一个元素,并返回该元素。
注意,该方法会改变原数组
vararr=[1,2,3] console.log(arr.shift());//1 console.log(arr);//[2,3]→→原数组改变
5.unshift();
用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。
注意,该方法会改变原数组
vararr=[1,2,3]; console.log(arr.unshift("hello"));//4 console.log(arr);//["hello",1,2,3]→→原数组改变 console.log(arr.unshift("a","b"));//6 console.log(arr);//["a","b","hello",1,2,3]→→原数组改变
6.slice();
用于复制目标数组的一部分,返回一个新数组。
注意,该方法不会改变原数组。
如果slice方法的参数是负数,则表示倒数计算的位置;如果第一个参数大于等于数组长度,或者第二个参数小于第一个参数,则返回空数组。
vararr=["a","b","c","d","e"]; console.log(arr.slice(1,3));//["b","c"] console.log(arr.slice(1));//["b","c","d","e"] console.log(arr.slice(-4,-1));//["b","c","d"] console.log(arr.slice(-2));//["d","e"] console.log(arr.slice(1,-2));//["b","c"] console.log(arr);//["Tom","Jack","Lucy","Lily","May"]→→原数组未改变
7.splice();
用于删除原数组的一部分成员,并可以在删除的位置添加新的数组成员,返回值是被删除的元素。
注意,该方法会改变原数组。
起始位置如果是负数,则表示从倒数位置开始删除。
①不传参时:无操作;
vararr=["a","b","c","d","e"]; console.log(arr.splice());//[] console.log(arr);//["a","b","c","d","e"]→→无操作
②只传入start:表示从索引为start的数据开始删除,直到数组结束;
vararr=["a","b","c","d","e"]; console.log(arr.splice(2));//["c","d","e"] console.log(arr);//["a","b"]→→原数组改变
③传入start和num:表示从索引为start的数据开始删除,删除num个;
vararr=["a","b","c","d","e"]; console.log(arr.splice(2,2));//["c","d"] console.log(arr);//["a","b","e"]→→原数组改变
④传入更多:表示从索引为start的数据开始删除,删除num个,并将第三个参数及后面所有参数,插入到start的位置;
vararr=["a","b","c","d","e"]; console.log(arr.splice(2,2,"f","g"));//["c","d"] console.log(arr);//["a","c","f","g","e"]---原数组改变
8.reverse();
用于颠倒排列数组元素,返回改变后的数组(还是原数组)。
注意,该方法将改变原数组
vararr=[a,b,c]; console.log(arr.reverse());//[c,b,a] console.log(arr);//[c,b,a]→→原数组改变
9.sort();
对数组成员进行排序,默认是按照字典顺序排序。排序后,原数组将被改变;
注意:sort方法不是按照大小排序,而是按照字典顺序。也就是说,数值会被先转成字符串,再按照字典顺序进行比较,例如:121排在13的前面;如果想让sort方法按照自定义方式排序,可以传入一个函数作为参数。
[10111,1101,111].sort(function(a,b){ returna-b;//升序 //returnb-a;//降序 })//[111,1101,10111]
10.join();
以指定参数作为分隔符,将所有数组成员连接为一个字符串返回。如果不提供参数,默认用逗号分隔;
注意,该方法不会改变原数组;
如果数组成员是undefined或null或空位,会被转成空字符串。
vararr=[a,b,c]; console.log(arr.join());//a,b,c console.log(arr.join("*"));//a*b*c console.log(arr);//[1,2,3]→→原数组未改变
11.for-in();
遍历语句,类似于循环,但for-in可以遍历没有索引的集合,也被成为枚举。
- for(variinarr)i是下标;
- for(variinobj)i是属性名.
补充:
push和pop结合使用,就构成了“后进先出”的栈结构(stack);
push和shift结合使用,就构成了“先进先出”的队列结构(queue)。
实例