@zChange
2017-09-13T14:37:18.000000Z
字数 2382
阅读 154
javascript
object.keys
let arr = {a:1,b:2};log(Object.keys(arr));//(2) ["a", "b"]
Array.isArray()
判断是否是数组
Array.isArray([]);if(!Array.isArray){Array.isArray = function(arg){return Object.prototype.toString.call(arg) === '[object Array]';}}
Array.indexOf()
返回数组中元素的第一个索引,不存在返回-1
let a = [0,1,2];a.indexOf(0)//0a.indexOf(3)//-1
Array.lastIndexOf()
在数组最后一个开始查找,返回指定元素的第一个索引,不存在返回-1
let a = [0,1,2];a.lastIndexOf(0)//2a.lastIndexOf(3)//-1
Array.every()
测试数组所有元素是否通过制定函数测试
当遇到一个条件不满足就返回false,不继续执行,否则执行到结束
let arr = [5,2,3,4];function isPass(el,index,arr) {log(el,index,arr);return el > 0;}arr.every(isPass)//5 0 [5,2,3,4]//2 1 [5,2,3,4]//3 2 [5,2,3,4]//4 3 [5,2,3,4]//truefunction isPass(el,index,arr) {log(el,index,arr);return el > 5;}arr.every(isPass)//5//false
Array.some()
测试数组所有元素是否通过制定函数测试
当遇到一个为true的就直接返回,否则就返回false
let arr = [1,2,3,4];function isPass(el,index,arr) {return el > 0;}arr.pass(isPass)//1//truefunction isPass(el,index,arr) {log(el,index,arr);return el > 5;}arr.pass(isPass)//1//2 3 4//false
Array.map()
会创建一个新数组,数组中每个元素会调用一次callback函数,每次执行的返回值组成一个新的数组
let arr = [1,2,3,4];var nArr = arr.map((x,index,arr)=>{return x+1;});log(nArr);//[2,3,4,5]//反转var reverses = arr.map((x)=>{return x;}).reverse();//['4,3,2,1']//reverse().join('') 4321
Array.filter()
方法会创建一个新数组,每个元素会调用callback函数,返回true的组成新数组
let arr = [1,2,3,4];var filterArr = arr.filter((x)=>{return x > 1;});log(filterArr)//[2,3,4]
Array.reduce()
数组中每个元素执行callback函数,(从左至右)返回函数累计处理的结果值
let arr = [1,2,3,4];//值累加var reduceArr = arr.reduce((a,value,index,arr)=>{log(a,value)return a+value},0)log(reduceArr);//7//合并数组var concatArr = [[0,1],[2,3],[4,5]].reduce((prev,curr)=>{return prev.concat(curr);},[])log(concatArr)//[0,1,2,3,4,5]//元素出现的次数let arr1 = [1,2,3,4,1,1,2];var countNum = arr1.reduce((prev,curr)=>{if(curr in prev){prev[curr] ++;}else{prev[curr] = 1;}return prev},{})log(countNum)//{1: 3, 2: 2, 3: 1, 4: 1}
Array.reduceRight()
数组中每个元素执行callback函数,(从右至左)返回函数累计处理的结果值
//合并数组var concatArr = [[0,1],[2,3],[4,5]].reduce((prev,curr)=>{return prev.concat(curr);},[])log(concatArr)//[4, 5, 2, 3, 0, 1]
Object.assign(目标对象, ...源对象)
将源对象赋值到目标对象。返回一个目标对象;
合并
let obj1 = {q:0};let obj2 = {w:1};let obj3 = {e:2};var concat = Object.assign(obj1,obj2,obj3);log(concat);//{q: 0, w: 1, e: 2}log(obj1)//{q: 0, w: 1, e: 2} 目标对象也会改变log(obj2)//{w: 1}
深拷贝
只拷贝属性值,也就是拷贝的只是个对象的引用
var copy = Object.assign({},obj);var copy1 = JSON.parse(JSON.stringify(obj));obj.a.c = 666;log(copy);//a:{c: 666}log(copy1)//a:{c: 1}