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类型的主要内容,如果未能解决你的问题,请参考以下文章