var arr=[4,3,2,1];
数组的添加
arr.push(0); //[4,3,2,1,0]
arr.unshift(8); //[8,4,3,2,1,0]
arr.splice(2,2,"Mike"); //[8,4,"Mike",1,0]
数组的删除
arr.pop(); //[8,4,"Mike",1]
arr.shift(); //[4,"Mike",1]
arr.splice(1,2) //[4]
数组的截取和合并
arr.push(1,4,5,8,4,3,2,8,9); //[4,1,4,5,8,4,3,2,8,9]
var arr1=arr.slice(4,8); //arr 是[4,1,4,5,8,4,3,2,8,9]
// 注意:slice()方法并不改变数组,需要赋值才能获取 arr1 是[4,3,2,8]
var brr1=new Array(2);
brr1[0]="Mike";
brr1[1]="Jhon";
var brr2=new Array(2);
brr2[0]="Lisa";
brr2[1]="Linda";
var brr3=new Array(2);
brr3[0]="Kin";
brr3[1]="Que";
var brr4= brr1.concat(brr2,brr3);
// concat()方法不会改变现有的数组,仅仅返回被连接的数组的个副本
// 可以通过赋值获
// console.log(brr1.concat(brr2,brr3))==console.log(brr4);
// brr1 是 ["Mike", "Jhon"]
// brr2 是 ["Lisa", "Linda"]
// brr3 是 ["Kin", "Que"]
数组的拷贝
console.log(arr); // [4, 1, 4, 5, 8, 4, 3, 2, 8, 9]
arr.slice(0);
arr.concat();
数组的反转
arr.reverse();
数组的字符串化
console.log(arr.join(",")); //这个方法也不改变原来数组 输出9,8,2,3,4,8,5,4,1,4
数组的排序
var crr=[2,43,5,3,32,9];
crr.sort(function(a,b){
return a-b; //从大到小排序,b-a则是从小到大排序
});
console.log(crr); //[2, 3, 5, 9, 32, 43]
对象数组的排序
var objectList=[];
function Person(name,age){
this.name=name;
this.age=age;
}
objectList.push(new Person("Mike",12));
objectList.push(new Person("Lissa",24));
objectList.push(new Person("Linda",30));
objectList.push(new Person("Jhon",4));
objectList.sort(function(a,b){
return (a.age-b.age);
});
for(var i=0;i<objectList.length;i++){
document.writeln("<br>age:"+objectList[i].age+"name:"+objectList[i].name);
}
// 输出:
// age:4name:Jhon
// age:12name:Mike
// age:24name:Lissa
// age:30name:Linda
filter方法
<!--可以输出所有大于输入的值的元素-->
<p>最小年龄:<input type="number" value="18" id="ageToCheck" /> </p>
<button onclick="myFunction()">点我</button>
<p>所有大于指定元素的值有:<span id="demo"></span></p>
<script type="text/javascript">
var ages=[23,4,32,2,32];
function checkAge(age){
return age>document.getElementById("ageToCheck").value;
}
function myFunction(){
document.getElementById("demo").innerHTML=ages.filter(checkAge);
}
</script>
forEach方法
var a=[2,3,4,43,2];
var sum=0;
a.forEach(function(val){
sum+=val;
console.log(sum); //依次输出2,5,9,52,54
})
console.log(sum);//54
a.forEach(function(v,i,a){
a[i]=v+1; //每个val值都自增1
})
console.log(a); //[3, 4, 5, 44, 3]
map()方法
var a=[1,2,3];
var b=a.map(function(x){
return x*x;
});
console.log(b); //[1, 4, 9]
every()和some()方法
every()和some()方法是数组的逻辑判定:他们对数组元素应用指定的函数进行判定,返回true或false。every()方法只有说有元素返回true时,返回true,相当于&;some()方法只有所有元素返回false时返回false,相当于|。
a=[1,2,3,4,5];
a.every(function(x){return x<10;});//=>true:全都小于10
a.every(function(x){return x%2===0;});//=>flase:不是所有的元素都是偶数
a.some(function(x){return x%2===0;});//=>true:a里面含有偶数
a.some(function(x){return x>10;});//=>false:全都不大于10
indexOf()和lastIndexOf()
indexOf()和lastIndexOf()搜索整个数组中具有给定值得元素,返回找到的第一个元素的索引或者没有找到就返回-1。indexOF()是从头至尾,而lastIndexOf()则反向搜索。
a=[0,1,2,1,0];
a.indexOf(1);//=>1 a[1]=1
a.lastIndexOf(1);//=>3 a[3]=1
a.indexOf(3);//=>-1