引用类型之数组

创建数组

  1. var colors=new Array();//new可以省略
  2. var colors=[];
读取和设置数组的值
var color=['red','blue','green']
color[2]='black';//修改第二项的值
color[3]='brown'//新增第四项

数组的属性(length)

length属性可以读取也可以设置。
可以向数组的末尾移除项,也可以向数组中添加新项。
移除项:

var color=['red','blue','green']
color.length=2;//移除项

添加项:

var color=['red','blue','green']
color[color.length]='black';//最后一项添加新项
color[22]='brown'//中间的为undefind

检测数组

  1. instanceof
if(value instancef Array){
    //对数组进行一些操作
}
  1. Array.isArray()
if(Array.isArray(value)){
    //对数组进行一些操作
}

数组方法

转换方法

toString()方法会返回数组中的每个值的字符串形式拼接而成的一个以逗号分割的字符串。

var color=['red','blue','green']
alert(color.toString())//'red,blue,green'

valueOf()方法返回的还是数组。
join()方法返回包含所有数组项的字符串。接收一个参数,即用作分隔符的字符串。

var color=['red','blue','green']
alert(color.join(','));//'red,blue,green'
alert(color.join('||')//'red||blue||green'
栈方法

后进先出(就是删除的时候从后面开始删除)
push()方法接收任意数量的参数,把它们加到数组的末尾,并返回修改后数组的长度。
pop()方法则从数组末尾移除最后一项,并返回移除的项。

var color=[];
var count=color.push('red','green')
alert(count)//2
var item=color.pop()
alert(item)//green
队列的方法

先进先出,在末端添加项,在前端移除项,并返回移除的项。

var color=[];
var count=color.push('red','green')
var item=color.shift()
alert(item)//'red'

shift与pop的用途相反,在前端添加任意项并返回新数组的长度。

var color=new Array('black');
var item=color.unshift('red','green');
alert(item);//[red,green,balck]
重排序的方法

reverse()是逆向排序
sort()是从小到大排序。对于数值类型或者其valueOf()方法可以使用一个简单的比较函数,传递到sort()方法中。

var value=[2,3,1,5]
value.sort(function compare(){
    value1-value2;
})//只有是正数的时候才调换两个值得顺序。
操作方法

slice()方法基于当前数组中的项创建一个新的数组。slice()方法可以接受一个或两个参数,即要返回项的开始和结束位置。在只要一个参数时,返回从参数开始到数组结束的位置。当有两个参数的时候,返回开始和结束的位置的项,但不包括结束项。

var color=['red','green','yellow']
var color2=color.slice(1)
alert(color2)//['green','yellow']
var color3=color.slice(1,2)
alert(color3)//['green']

splice()方法
splice(0,2)//从第0个位置,取2个 splice(2,0,'red','green')//从第2个位置取0个,插入两项。
splice(2,1,'red','green')//从第2个位置取1个,并替换成'red,'green'。

位置方法(定位)

indexOf()接收两个参数要查找的项和(可选)表示要查找起点位置的索引,indexOf从数组开头进行查找,而lastIndexOf()从数组末尾开始查找。都返回要查找的项在数组中的位置。没有的话返回-1。

var color=[1,2,3,4,5,4,3,2,1]
alert(number.indexOf(4))//3,数字4在第3个位置
alert(number.indexOf(4,4))//5
迭代方法

every和some用于查询数组中的项是否满足某个条件。但是,every是每个都必须满足返回true,而some是有一个满足就返回true。

var number=[1,2,3,4,5,4,3,2,1]
var everyResult=number.every(functon(item,index,array){
    retrun (item>2)
});
alert(everyResult)//false

然而,filter函数返回的是数组,对查询某些符合条件的所有数组项很有用。

var number=[1,2,3,4,5,4,3,2,1]
var result=number.filter(function(item,index,array){
    return (item>2);
});
alert(result)//[3,4,5,4,3]

map()也返回一个数组,适合创建包含项与另一个数组一一对应的数组。

var number=[1,2,3,4,5,4,3,2,1]
var result=number.map(function(item,index,array){
    return item*2;
}
alert(result)//[2,4,6,8,10,8,6,4,2]

forEach()方法只是对每一项传入的函数,这个方法没有返回值,和for循环迭代数组一样。

var number=[1,2,3,4,5,4,3,2,1];
number.forEach(function(item,index,array){
//执行某些操作
});
归并方法

reduce()和reduceRight()方法只是决定了从哪头开始遍历数组,其他的都一样。接收4个值:前一个值,当前值,项的索引,数组对象

var number=[1,2,3,4,5,4,3,2,1];
var sum=number.reduce(function(prev,cur,index,array){
    return pre+cur;
});
alert(sum)//15

实例

写一个函数,操作数组,数组中的每一项变为原来的平方,在原数组上操作

function squareArr(arr){
for(var i=0;i

写一个函数,操作数组,返回一个新数组,新数组中只包含正数,原数组不变

function filterPositive(arr){
    var newArr=arr.every(function(value){
    return value>0
})
}
var arr = [3, -1,  2,  '饥人谷', true]
var newArr = filterPositive(arr)
console.log(newArr) //[3, 2]
console.log(arr)

代码输出(过滤一个数组,在原数组上操作)

var arr=[3,1,0,-1,-3,2,-5]
function filter(arr){
  for(i=0;i

过滤数组,生成新的数组,只保留正数

var arr=[3,1,0,-1,-3,2,-5]
function filter(arr){
    var newArr=[];
    for(i=0;i0){
          newArr.push(arr[i]);
}
}return newArr;
}
var arr2=filter(arr)
console.log(arr2)
console.log(arr)

你可能感兴趣的:(引用类型之数组)