数组
数组对象的作用是:使用单独的变量名来存储一系列的值
数组的创建方法:
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]);
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]+" 
}
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] + " ")
}
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))
常见数组的方法:
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 />");
var arr4=["努","力","努","力","努","力","努","力"];
document.write(arr4.join("")+"<br />");
document.write(arr2.push("一","二","三","四","五")+"<br />");
document.write(arr2+"<br />");
document.write(arr2.unshift("a","b","c","d","e")+"<br />");
document.write(arr2+"<br />");
document.write(arr2.pop()+"<br />");
document.write(arr2+"<br />");
document.write(arr2.shift()+"<br />");
document.write(arr2+"<br />");
document.write(arr2.reverse()+"<br />");
document.write(arr1.slice(2,3)+"<br />")
document.write(arr1.slice(2,4)+"<br />")
排序 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
for(var i=0
minIndex = i
for(var j=i+1
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
for(var j = i + 1
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
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
if(arr.indexOf(arr[i]) == i) {
ret.push(arr[i])
//console.log(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
var k = arr[i]
if(!o[k]) {
o[k] = true
new_arr.push(k)
}
}
console.log(new_arr)