Array类型

Posted root纸飞机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Array类型相关的知识,希望对你有一定的参考价值。

创建Array

var arr1 = new Array();
var arr2 = new Array('a');
var arr3 = [];
var arr4 = ['a','b','c'];

操作与检测

var arr = ['a','b','c'];
console.log(arr[0]);//a
console.log(arr.length);//3
if(Array.isArray(arr)){
    console.log('array类型')//array类型
}

除了Array.isArray()以外,instanceof和Object.prototype.toString.call()也可以检测

常用方法

join()   [原数组不改变]

join(separator):将数组元素组成一个字符串返回,以separator为分隔符。无参数则默认用'逗号'为分隔符。

var a = ['a','b','c'];
var b = a.join('1');
console.log(b); //'a1b1c
console.log(a); //['a','b','c']

push()   [原数相发生改变]

接收任意数量的参数,把它们逐个添加到数组末尾。返回添加后的新的数组长度。

var a = ['a','b','c'];
var b = a.push('d','e');
console.log(b); //5
console.log(a); //['a','b','c','d','e']

pop()  [原数模发生改变]

数组未尾移除最后一項,减少数组的length值。返回尾部被删除的元素。

var a = ['a','b','c'];
var b = a.pop();
console.log(b);//'c'
console.log(a);//['a','b']

unshift()  [原数组发生改变]

将一个或多个元素添加到原数组开头。返回添加后的新的数组长度。

var a = ['a','b','c'];
var b = a.unshift('1','2');
console.log(b);//5
console.log(a);//['1','2','a','b','c']

shift()  [原数组发生改变]

返回原数组第一项。返回被删除的元素,如果删除为空则返回undefined。

var a = ['a','b','c'];
var b = a.shift();
console.log(b); //'a'
console.log(a)//['b','c']

sort()  [原数组发生改变]

接收一个比较函数作为参数,用于对数组的元索进行排序。返回排序后的该数组。如果无参数将按照ASCII字符顾序进行排序。比较函数function(a,b)(return b-a)。a-b从小到大排序,b-a从大到小排序。

var a = [1,2,3);
var b = a.sort(function(a,b){retun b-a});
console.log(b); ///3,2,11
console.log(a); //3,2,1]

reverse()  [原数组发生改变]

将数组中元素的位置颠倒,并返回该数组。

var a = ['a','b','c'];
yar b = a.reverse();
console.log(b);//['c','b','a']
console.log(a); //['c','b','a']

concat()  [原数組不改变]

连接两个或多个数组,会先创建当前数组的一个副本,然后将参数加到副本的末尾,返回这个新构建的数组。无参数时只是复制当的数组并返回副本。

var a = ['a','b','c'];
var b = ['d','e','f'];
var c = a.concat(b);
console.log(c);//['a','b','c','d','e']
console.log(a);//['a','b','c']

slice() [原数组不改变]

返回从原数组中指定开始下标到结束下标之间的项(不包括结束位置的项)细成的新数组。在只有一个参数的情况下,返四从该参数指定位置开始到当前数组末尾的所有项。

var a = ['a','b','c','d'];
var b = a.slice(1,2);
console.log(b);//['b']
console.log(a); //['a','b','c']

splice()  [原数组发生改变]

删除、插入数组。

参数1:删除项目的位置(正数从0开始,负数从-1开始。

参数2:要删除的项目数量。

参数3-n;向数组添加的新项。

返回被删除的元素组成的数组,如果没有删除项,则返回空数组[]。

var a = ['a','b','c','d'];
var b = a.splice(0,2,'e');
console.log(b)//['a','b']
console.log(a)//['e','c','d']

indexOf()/lastIndexOf()  [原数组不改变]

从数组的开头/末尾开始查找。返国第一个匹配到的元索的位置索引,找不到就返回-1。

var a = ['a','b','c','d'];
var b = a.indexOf('c');
console.log(b)//2
consolelog(a) //['a','b','c','d']

forEach()  [原数场是否改变依具体情况]

对数组进行遍历,对数组中的每一项运行给定函数。函数有三个参数:数组元素元素索引数组本身

var a = [1,2,3,4,5];
var sum = 0;
a.forEach((value,index,arr)=> {
  sum += value;
})
console.log(sum); //15
console.log(a); //[1,2,3,4,5]

//-----------------------------

var k = [1,2,3,4,5]
k.forEach((value, index, arr)=> {
 arr[index] = value + 2;
})
console.log(k); //[3,4,5,6,7]

//-----------------------------

var m = [
  {a:1,b:2},
  {a:3,b:4}
]
m.forEach(value => {value.a = 6});
console.log(m);//[{a:6,b:2},{a:6,b:4}]

//-----------------------------

var p = [
  {a:1,b:2},
  {a:3,b:4}
]
p.forEach(value => {value = 6});//形参被重新赋值
console.log(p);//[{a:1,b:2},{a:3,b:4}]

map()   [原数值不改变]

对数组中的每一项运行给定函数,返回每次函数调用的结果组成的新数组。

var arr = [1,2,3,4,5];
var new_arr = arr.map((value) => {return value * value});
console.log(new_arr);//[1,4,9,16,25]
console.log(arr);//[1,2,3,4,5]

filter()   [原数组不改变]

数组中的每一项运行给定函数,返回满足过滤条件的项组成的新数组。

var arr = [3, 12, 7, 1,9, 3, 18];
var new_arr = arr.filter((value)=>{return value < 5});
console.log(new_arr);//[3,1,3]
console.log(arr);//[3,12,7,1,9,3,18]

reduce()  [原数组不改变]

调用指定的回调函数将数组元素从左到右进行累计计算,并返回组合后的单个值。该回调函数有两个参数pre,cur表示数组的元素成员。

var arr = [1,2,3,4,5];
var b = arr.reduce((pre,cur)=>{
    return pre + cur;
})
console.log(b);//15
console.log(arr); //[1,2,3,4,5]

以上是关于Array类型的主要内容,如果未能解决你的问题,请参考以下文章

Discuz代码片段

使 PHP 代码更加简洁的几个小技巧

javascript常用代码片段

几个有用的JavaScript/jQuery代码片段(转)

使用Array.Count并匹配案例F#

10个JavaScript代码片段,使你更加容易前端开发。