数组常用方法

对于前端er来说,javaScript中的数组一定是避不开的,但是数组操作还挺多的,有的还很像,你真的清楚每个方法需要的参数和返回值吗,反正我经常搞混,今天就来整理一下常用的数组处理方法 ,参考《菜鸟教程》

创建数组

1.使用Array构造函数

var arr = new Array();
var arr = new Array(20);//预先知道数组要保存的项目数量  
var arr = new Array("a","b","c");//也可直接向构造的函数中传递数组中包含的项
var arr = Array(3); //省略“new”,创建一个包含3项的数组
var arr = Array(“Greg”);  

2.使用数组字面量表示法

var arr = [1, 2, 3];
var arr = []; //创建空数组

获取数组值,使用方括号加数字索引的方法

var arr = [1, 2, 3];
console.log(arr[0]); // 1 

获取array长度,直接访问length属性

var arr = [1, 2, 3];
console.log(arr.length); // 3

检测数组

确定某个对象是不是数组

1.使用instanceof

if(value instanceof Array){
}

使用instanceof的前提是,假定只有一个全局执行环境。在浏览器中,我们的脚本可能需要在多个窗口之间进行交互。多个窗口意味着多个全局环境,不同的全局环境拥有不同的全局对象,从而拥有不同的内置类型构造函数。这可能会引发一些问题。比如,表达式 [] instanceof window.frames[0].Array 会返回false,因为 Array.prototype !== window.frames[0].Array.prototype(这一段是看书没有看懂,查资料看到的,其实不是很理解,总之如果你也不理解,暂时可以理解为当存在多个全局执行环境时instanceof检测数组会出问题)

2.Array.isArray()方法

为了避免上面的问题,ECMAScript5新增了Array.isArray()方法,这个方法的目的是最终确定这个值到底是不是数组,而不管他是在哪个全局执行环境创建的

if(Array.isArray(value)){}

支持此方法的浏览器:IE9+,Firefox 4+,Safari5+、Opera 10.5+和Chrome

转换方法

1. toString()

把数组转化为字符串,并返回结果,每一项以逗号分割。结果唯一

2. toLocaleString()

把数组根据你机器的本地环境转换为字符串,并返回结果,常用于返回时间类型数据,结果会因本地环境不同而有所不同

3. valueOf()

返回数组本身

 var arr = new Array("1","2","3","4","5");
 console.log(arr.valueOf()); //(5)["1", "2", "3", "4", "5"]
 console.log(arr.toString()); //1,2,3,4,5
 console.log(arr.toLocaleString());//1,2,3,4,5

栈方法

1.push()

可向数组的末尾添加一个或多个元素,并返回新的长度,数组本身会发生变化
语法 array.push(item1, item2, …, itemX)
参数 可添加多个参数,至少有一个
返回值 数组新长度

var arr = new Array("1","2","3","4","5");
 console.log(arr.push("6")); // 6
  console.log(arr); // ["1","2","3","4","5","6"]

2.pop()

删除数组的最后一个元素并返回删除的元素,此方法会改变数组的长度
语法 array.pop()
返回值 被删除的最后一个元素

var arr = new Array("1","2","3","4","5");
 console.log(arr.pop()); // 5
 console.log(arr); // ["1","2","3","4"]

队列方法

1.shift()

把数组的第一个元素从其中删除,并返回第一个元素的值,有点像pop(),此方法会改变数组的长度
语法 array.shift()
返回值 被删除的第一个元素的值

var arr = new Array("1","2","3","4","5");
 console.log(arr.shift()); // 1
 console.log(arr); // ["2", "3", "4", "5"]

2.unshift()

可向数组的开头添加一个或更多元素,并返回新的长度,有点像push()
语法 array.unshift(item1, item2, …, itemX) 参数 可添加多个参数,至少有一个
返回值 数组新长度

var arr = new Array("1","2","3","4","5");
 console.log(arr.unshift("6")); // 6
  console.log(arr); // ["6", "1", "2", "3", "4", "5"]

重排序方法

1.reverse()

颠倒数组中元素的顺序
语法 array.reverse()
返回值 颠倒顺序后的数组

var arr = new Array("1","2","3","4","5");
 console.log(arr.reverse()); // ["5", "4", "3", "2", "1"]

2.sort()

对数组的元素进行排序
语法 array.sort(sortby)
参数 可选。规定排序顺序。必须是函数。
返回值 排序后的新数组

 var arr = new Array("3","19","5","1","2");
 var array = ["George","John","Thomas","James","Adrew","Martin"]
  function sortSec(a,b){
    return a - b;
 }
 console.log(arr.sort()); //["1", "19", "2", "3", "5"]
 console.log(arr.sort(sortSec)); //["1", "2", "3", "5", "19"]
 console.log(array.sort()); //["Adrew", "George", "James", "John", "Martin", "Thomas"]

操作方法

1.concat()

连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本
语法 array.concat(arrayX,arrayX,……,arrayX)
参数 必需,该参数可以是具体的值,也可以是数组对象,可以是任意多个。
返回值 返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 array 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组

 var arr = new Array("3","19","5","1","2");
 var array = ["George","John","Thomas","James","Adrew","Martin"]
 console.log(arr.concat(array));// ["3", "19", "5", "1", "2", "George", "John", "Thomas", "James", "Adrew", "Martin"]

2.slice()

从已有的数组中返回选定的元素,是当前数组的子数组
语法 array.slice(start,end)
参数

参数 描述
start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素

返回值 返回一个新的数组,包含从 start 到 end (不包括该元素)的 array 中的元素。

 var arr = new Array("3","19","5","1","2");
 console.log(arr.slice(1));//["19", "5", "1", "2"]
 console.log(arr.slice(1,-1));//["19", "5", "1"]
 console.log(arr.slice(1,4)); //["19", "5", "1"]

3.splice()

从数组中添加/删除项目,然后返回被删除的项目,该方法会改变原始数组
语法 array.splice(index,howmany,item1,…..,itemX)
参数

参数 描述
index 必需,整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
item1, …, itemX 可选。向数组添加的新项目。

返回值 如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组

 var arr = new Array("0","1","2","3","4","5");
  console.log(arr.splice(0,2));   //["0", "1"]
  console.log(arr);              //["2", "3", "4", "5"]
 var arr = new Array("0","1","2","3","4","5");
  console.log(arr.splice(1));   //["1", "2", "3", "4", "5"]
  console.log(arr);             //["0"]
 var arr = new Array("0","1","2","3","4","5");
 console.log(arr.splice(2,0,"6","6","6"));     //[]空数组
 console.log(arr);                             //["0", "1", "6", "6", "6", "2", "3", "4", "5"]

位置方法

1.indexOf()

返回某个指定的字符串值在数组中首次出现的位置,从数组的开头(位置0)开始向后找
语法 aarray.indexOf(item,start)
参数

参数 描述
item 必须。查找的元素
start 可选的整数参数,规定在数组中开始检索的位置。它的合法取值是 0 到 array.length - 1。如省略该参数,则将从字符串的首字符开始检索

返回值 元素在数组中的位置,如果没有搜索到则返回 -1

var arr = new Array("0","1","2","3","4","5");
 console.log(arr.indexOf("5")); //5
 console.log(arr.indexOf("5",1)); //5
 console.log(arr.indexOf("6")); //-1

2.lastIndexOf()

返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索
语法 array.lastIndexOf(item,start)
参数

参数 描述
item 必须。查找的元素
start 可选的整数参数,规定在数组中开始检索的位置。它的合法取值是 0 到 array.length - 1。如省略该参数,则将从字符串的最后一个字符处开始检索

返回值 返回的是出现的最后一个 searchvalue 的位置

 var arr = new Array("0","1","2","5","3","4","5");
  console.log(arr.lastIndexOf("5")); //6
  console.log(arr.lastIndexOf("5",4)); //3

猜你喜欢

转载自blog.csdn.net/guotingting923/article/details/80499647