年终总结之数组

今天看到了一篇文章,关于数组的,想想年终了,总结下自己所学的

文章地址:数组总结

1:创建数组

var colors = [];
var colors = ['red','blue'];
var arr = new Array();
var arr2 = new Array(10);
var arr3 = new Array(5,4,3,2,1)


2:检测数组

if(arr instanceof Array){}
如果网页包含多个框架
if(Array.isArray(arr)){}


3:数组中的api

(1)valueOf()

valueOf() 方法返回 Array 对象的原始值。
该原始值由 Array 对象派生的所有对象继承。


(2)arr.toString();

把数组转换为字符串,并返回结果


(3)arr.push(item)

从数组末尾添加元素,并返回新数组的长度


(4)arr.pop()

从数组末尾删除元素,并返回被删除的元素


(5)arr.unshift(item)

从数组头部添加元素,并返回新数组的长度


(6)arr.shift()

从数组头部删除元素,并返回被删除的元素


(7)arr.reverse()

反转数组的顺序,并返回重新排序之后的数组, 原数组会被改变


(8)arr.sort(fn)

如果不传参数,默认情况下数组内的元素会被转换为字符串进行比较,因此一般不推荐直接使用默认的arr.sort()进行排序。
返回值为排序后的新数组。原数组会被改变


将数组内数值元素从小到大排序。
var demo = [1, 4, 2, 'reee', 'name', '9', 'doc'];
demo.sort(function(a, b)) {
    return a - b;
}


将数组内数值元素从大到小排序
var demo = [1, 4, 2, 'reee', 'name', '9', 'doc'];
demo.sort(function(a, b) {
    return b - a;
})


(9)arr.concat(otherArr)

参数中传入元素或者数组, 会将该参数合并到arr中,返回合并后新的数组,原数组不会改变


(10)arr.slice()

剪切数组,返回剪切之后的数组,元素不会改变
var arr = [4, 2, 1, "reee", "name", "9", "doc"];
arr.slice(2);
//  [1, "reee", "name", "9", "doc"]


传入2个参数,表示起始位置与结束位置,但不包括结束位置所在的元素
var arr = [4, 2, 1, "reee", "name", "9", "doc"];
arr.slice(2, 4);
//  [1, "reee"]


(11)arr.splice()

根据参数的不同,可以分别实现删除,插入,替换元素的作用,会改变原始数组


删除
传入2个参数, 分别表示起始位置与要删除元素的个数,返回被删除掉的元素组成的数组


var arr = [4, 2, 1, "reee", "name", "9", "doc"];
arr.splice(2, 3);
// > [1, "reee", "name"]
// arr: [4, 2, 1, "9", "doc"]


插入
传入3个参数, [起始位置 | 要删除的项数 为0 | 要插入的元素], 最终返回删除掉的元素组成的数组,因为这里删除项数为0,因此会返回空数组


var arr = [2, 4, 6];
arr.splice(2, 0, 'red', 'green'); 
// > []
// arr: [2, 4, "red", "green", 6] 


替换
传入三个参数, [ 起始位置 | 要删除的项数 为1 | 要插入的元素 ],最终返回被删除掉的元素组成的数组


var arr = [2, 4, 9];
arr.splice(1, 1, ['tim', 'tom']);
// > [4]
// arr: [2, ['tim', 'tom'], 9]


(12)arr.indexOf(item)

验证数组中是否含有某个元素,返回第一个匹配到的元素在数组中所在的位置,如果没有,则返回 -1


var arr = [2, 'tim', 4, 5, 2];
arr.indexOf('tim');
// > 1
arr.indexOf('jake');
// > -1


(13)arr.every()

对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。会有一个函数作为every的参数,该函数也有3个参数,分别为
[ 调用every的数组的每一项元素 | 对应元素所在的位置 | 表示该数组 ]


var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
var everyRes = numbers.every(function(item, index, array) {
    return item > 2;
})
// > false


(14)arr.some()



对数组中的每一项运行给定函数,如果该函数对其中一项返回true,则返回true。会有一个函数作为every的参数,该函数也有3个参数,分别为
[ 调用every的数组的每一项元素 | 对应元素所在的位置 | 表示该数组 ]


var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
var everyRes = numbers.some(function(item, index, array) {
    return item > 2;
})
// > true


(15)arr.filter(fn)

过滤方法。返回满足条件的元素组成的数组。fn的参数为
[ 调用every的数组的每一项元素 | 对应元素所在的位置 | 表示该数组 ]


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


(16)arr.map(fn)

对数组的每一项进行计算等处理,返回处理结果组成的数组,fn的参数为
[ 调用every的数组的每一项元素 | 对应元素所在的位置 | 表示该数组 ]


var numbers = [1, 2, 3, 3, 2, 1];
var everyRes = numbers.map(function(item, index, array) {
    return item > 2;
})
// >[false, false, true, true, false, false]


(17)arr.forEach(fn)

遍历数组,没有返回值,fn的参数为
[ 调用every的数组的每一项元素 | 对应元素所在的位置 | 表示该数组 ]


numbers.forEach(function(item, index) {
    // do something
})


(18)arr.reduce(fn)

缩减方法。fn的参数为
[ 前一个元素 | 当前元素,从1开始 | 后一个元素的序列,从1开始计数 | 表示该数组 ]


var values = [1, 2, 3, 4, 5];
var sum = values.reduce(function(prev, cur, index, array) {
    return prev + cur;
})
// > 15 
//每一次迭代之后的结果分别为
// [3, 3, 4, 5]
// [6, 4, 5]
// [10, 5]
// 15


(19)arr.reduceRight(fn)

与reduce一模一样,只是方向相反。

猜你喜欢

转载自blog.csdn.net/qq_34255080/article/details/79071300