JavaScript--数组的创建,属性及方法

221 阅读4分钟

数组

数组对象的作用是:使用单独的变量名来存储一系列的值

数组的创建方法:

1.

			var arr1 = new Array();
			arr1[0] = "a";
			arr1[1] = "b";
			arr1[2] = "c";
			document.write("arr1:" + arr1 + "<br />");
                        

2.

                        var arr2 = new Array(3); //不是上限,是长度
			arr2[0] = 1;
			arr2[1] = 2;
			arr2[2] = 3;
			document.write("arr2:" + arr2 + "<br />");

3.

                        var arr3 = new Array([3]); //长度为1,第一个数是3
			arr3[0] = 3;
			document.write("arr3:" + arr3 + "<br />")

4.【推荐】

                        var arr4 = ["好", "梦", "成", "真"];
			document.write("arr4:" + arr4 + "<br />") //打印全部数组
			document.write(arr4[2] + "<br />"); //打印指定下标元素

遍历数组:(for...in)

                        var webGroup = [
				["01", "王五", "女", "河北邯郸"],
				["02", "李四", "女", "山西大同"],
				["03", "孙八", "男", "重庆"],
				["04", "张三", "男", "中国"]
			]
			var i="";
			for(i in webGroup){//行
				if(i%2==0){
					document.write("<bgcolor='pink'>");
				}else{
					document.write("<bgcolor='lightblue'>");
				}
				var j="";
				for(j in webGroup[i]){//列
					document.write(webGroup[i][j]+"&nbsp;&nbsp;");
				}
				document.write("<hr width='50%' align='left'>");
				document.write("<br />")
			}

二维数组:

	var webGroup = [        				["01", "王五", "女", "河北邯郸"],
				["02", "李四", "女", "山西大同"],
				["03", "孙八", "男", "四川重庆"],
				["04", "张三", "男", "中国"]
			]
			for (var i = 0; i < webGroup.length; i++) {//行
				document.write("arr[" + i + "]的值如下" + "<br />");
				for (var j = 0; j < webGroup[i].length; j++) {//列
					document.write(webGroup[i][j] + "&nbsp;&nbsp;")
				}
				document.write("<hr width='50%' align='left'/>")
			}
			

数组的属性

constructor 属性返回对创建此对象的数组函数的引用。
<script type="text/javascript">
			var test = new Array();

			if (test.constructor == Array) {
				document.write("This is an Array");
			}
			if (test.constructor == Boolean) {
				document.write("This is a Boolean");
			}
			if (test.constructor == Date) {
				document.write("This is a Date");
			}
			if (test.constructor == String) {
				document.write("This is a String");
			}
		</script>
index
input
length 属性可设置或返回数组中元素的数目。
<script type="text/javascript">
			var arr = new Array(3)
			arr[0] = "John"
			arr[1] = "Andy"
			arr[2] = "Wendy"

			document.write("Original length: " + arr.length)
			document.write("<br />")

			arr.length = 5
			document.write("New length: " + arr.length)
		</script>
prototype 原型
prototype 属性使您有能力向对象添加属性和方法。
prototype 向原型添加属性
对象的原型==构造函数
prototype属性:
			function Fish(name,color){
				this.name=name;
				this.color=color;
			}
			var myfish=new Fish("mackarel","gray");
			Fish.prototype.livesIn="water";//向原型添加属性
			Fish.prototype.price=20;
			
			var pro="";
			for(pro in myfish){
				document.write("myfish["+pro+"]:"+myfish[pro]+"<br />")
			}
prototype方法:

             function Employee(name,salary){
				this.name = name;
				this.salary = salary;
			}
			//向原型添加方法
			Employee.prototype.getSalary = function getSalaryFunction(){
				return this.salary;
				
			}
			Employee.prototype.addSalary = function addSalaryFunction(addition){
				this.salary = this.salary + addition;
				return this.salary;
			}
			var boss1 = new Employee("joan",200000);
			var boss2 = new Employee("kim",100000);
			var boss3 = new Employee("sam",150000);
			alert(boss1.getSalary());
			alert(boss2.getSalary());
			alert(boss3.addSalary(688));

常见数组的方法:

                        //concat() 连接两个或更多的数组,并返回结果。 
			var arr0=[0,0,0,0,0]
			var arr1=[1,2,3,4,5];
			var arr2=[6,7,8,9,0];
			var arr3=arr1.concat(arr2,arr0);
			document.write("concat:"+arr3+"<br />");
                        
			//join()可以将指定元素转换为指定格式的字符串
			var arr4=["努","力","努","力","努","力","努","力"];
			//document.write(arr4.join()+"<br />");//努,力,努,力,努,力,努,力
			document.write(arr4.join("")+"<br />");//努力努力努力努力
                        
			//push 向数组尾部添加一个或多个数据,并返回新的长度
			document.write(arr2.push("一","二","三","四","五")+"<br />");
			document.write(arr2+"<br />");
                        
			//unshift 向数组头部添加一个或多个数据,并返回新的长度
			document.write(arr2.unshift("a","b","c","d","e")+"<br />");
			document.write(arr2+"<br />");
                        
			//pop 删除并返回数组的最后一个元素
			document.write(arr2.pop()+"<br />");
			document.write(arr2+"<br />");
                        
			//shift 删除并返回数组的第一个元素
			document.write(arr2.shift()+"<br />");
			document.write(arr2+"<br />");
                        
			//reverse 颠倒数组中元素的顺序
			document.write(arr2.reverse()+"<br />");
                        
			//slice 从某个已有的数组返回选定的元素  截取
			//arrayObject.slice(start,end)  
			document.write(arr1.slice(2,3)+"<br />")//3
			document.write(arr1.slice(2,4)+"<br />")//3 4

排序 sort

			var arr=[1,2,3,28,5,6,7,8,9,10,11,22,17];
			var arr2=["excellent","very much","good","blue"];
			var arr3=["@","#","$","^"];
			function sortNumber(a,b){//按大小排序
				return a - b
			}
			document.write(arr+"<br />");
			document.write("排序后:"+arr.sort()+"<br />");//排序后:1,10,11,17,2,22,28,3,5,6,7,8,9

			document.write("排序后:"+arr2.sort()+"<br />");//排序后:blue,excellent,good,very much

			document.write("排序后:"+arr3.sort()+"<br />");//排序后:#,$,@,^
			document.write("排序后的sortNumber(a,b):" +arr.sort(sortNumber) + "<br />")

排序(按长度)

                        var arr=["excellent","very much","good","blue","a","be"];
			arr.sort(function(a,b){
				if(a.length > b.length){//按照从短到长的顺序,反之从长到短
					return 1;
					
					}else if(a.length == b.length){
						return 0;
				}else{
					return -1;
				}
			});
			document.write(arr);

选择排序

                        var arr1=[100,10,15,1,4,56];
			function selectionSort(arr){//完成从小到大排列
				var len =arr.length;//数组长度
				var minIndex,temp;//minIndex最小值对应的下标,临时变量
				for(var i=0; i<len -1;i++){
					minIndex = i;//假设第一个数是最小值
					
					for(var  j=i+1;j<len;j++){
						if(arr[j]<arr[minIndex]){//寻找最小的数
							minIndex=j;//将最小的数索引保存										
						}
					}
					temp=arr[i];
					arr[i]=arr[minIndex];
					arr[minIndex]=temp;
				}
				return arr;
			}
			selectionSort(arr1);
			document.write(selectionSort(arr1));

数组去重

1.

                        var arr = [1, 1, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5];
			function removeDuplicatedItem(arr) {
				for(var i = 0; i < arr.length - 1; i++) {
					for(var j = i + 1; j < arr.length; j++){
						if(arr[i] == arr[j]) {
							arr.splice(j, 1); //去重
							j--;
						}
					}
				}
				return arr;
			}
			arr2 = removeDuplicatedItem(arr);
			console.log(arr2);//去重以后的数组*/

2.

                  var ar = [1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5];
			
			function rep2(arr) {
				for(var i = 0; i < arr.length; i++) {
					if(arr.indexOf(arr[i]) != i) {
						//删除数组元素后数组长度减1后面的元素前移
						arr.splice(i, 1);
						//数组下标回退
						i--; 
					}
				}
				return arr;
			}
			var a1 = rep2(ar);
			console.log(a1);

3.

               	var arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
			var r = arr.filter(function(element, index, self) {//element 元素  index:索引  self 数组
				return self.indexOf(element) === index;
			});
			console.log(r);

4.

           var arr = [1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5];
			function rep(arr) {
				var ret = [];//空数组[存放新值/不重复]
				for(var i = 0; i < arr.length; i++){
					if(arr.indexOf(arr[i]) == i) {
						ret.push(arr[i]);
						//console.log(ret);//观察ret动态
					}
				}
				return ret;
			}
			arr2 = rep(arr);
			console.log(arr2);

5.

	var arr = [1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5];
			var o = {};    
			var new_arr = [];//新数组
			for(var i = 0; i < arr.length; i++) {
				var k = arr[i];
				if(!o[k]) {
					o[k] = true;
					new_arr.push(k);
				}
			}
			console.log(new_arr);