美文网首页
引用类型之数组

引用类型之数组

作者: 倾国倾城的小饼干 | 来源:发表于2018-04-03 11:06 被阅读0次

创建数组

  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<arr.length;i++){
     arr[i]=arr[i]*arr[i];
}
}
var arr = [2, 4, 6]
squareArr(arr)
console.log(arr)

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

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<arr.length;i++){
    if(arr[i]<=0){
      arr.splice(i,1);
      i--;//因为删除了一个元素,索引值也要删除1。
}
}
}
filter(arr);
console.log(arr);

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

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

相关文章

  • 引用类型之数组

    创建数组 var colors=new Array();//new可以省略 var colors=[]; 读取和设...

  • 面向对象学习笔记

    - 数组其实就是一种引用类型。 int是基本类型,int[]是引用类型 数组是引用类型,引用类型和基本类型的区别在...

  • java基础数据类型(二)

    引用类型 对象、数组都是引用数据类型;所有引用类型的默认值都是null;一个引用变量可以用来引用与任何与之兼容的类...

  • Note 3 Swift (1)

    Swift学习笔记 变量与常量 变量 常量 值类型与引用类型 值类型 引用类型 数组与字典 数组 字典

  • 引用类型与对象拷贝

    1.引用类型有哪些?非引用类型有哪些 引用类型: 对象 object 数组 函数 正则非引用类型...

  • 引用类型之「对象/数组」

    # 引用类型种类 JS中引用类型有:(1) 对象:Object(2)数组:Array(3)日期:Date(4)正则...

  • JavaScript引用类型与对象拷贝

    引用类型有哪些?非引用类型有哪些 引用类型:对象、数组、函数、正则非引用类型:string、number、bool...

  • 【Java基础】- 集合

    对象数组 数组既可以存储基本数据类型,也可以存储引用类型。它存储引用类型的时候的数组就叫对象数组。 比如:用数组存...

  • day2.6_数组

    数组概述 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。 创建数组对象...

  • 引用类型数组

    数组是对象 在Java中,数组属于引用类型数据数组数据在堆中存储,数组变量属于引用类型,存储数组对象的地址信息,指...

网友评论

      本文标题:引用类型之数组

      本文链接:https://www.haomeiwen.com/subject/edjqhftx.html