数组(Array)经常使用方法;vue
数组经常使用的方法:concat(),every(), filter(), forEach(), indexOf(), join(), lastIndexOf(), map(), pop(), push(), reduce(), reduceRight(), reverse(), shift(), slice(), some(), sort(), splice(), toLocaleString(), toString(), unshift(),其中every(),filter(),forEach(), indexOf(), lastIndexOf(),map(), reduce(), reduceRight()和some ECMAScript 5新增的方法。java
var arr1 = [1,2,3]; var arr2 = [4,5,6]; var arr3 = [7,8]; arr1.concat(arr2); // [1, 2, 3, 4, 5, 6] arr1.concat(arr2,arr3); //链接多个数组,[1, 2, 3, 4, 5, 6, 7, 8] arr1 // [1,2,3]
var arr = [1,2,3]; arr.join(); // "1,2,3" 默认为逗号 arr.join(''); // "123" arr.join('|') // "1|2|3" arr // [1,2,3]
var arr = [1,2,3,4,5,6,7,8]; arr.slice(0,3); // [1, 2, 3] arr.slice(3,5); // [4, 5] arr.slice(4) // [5, 6, 7, 8] arr.slice(3,-1); // [4, 5, 6, 7] arr.slice(-3,-2) // [6]
var arr = [1,2,3,4,5,6,7,8,9] arr.splice(8) // [9] 一位参数默认截取到最后 arr //[1, 2, 3, 4, 5, 6, 7, 8] arr.splice(1,0) // [] 第二个参数为0,不会删除数组元素 arr // [1, 2, 3, 4, 5, 6, 7, 8] arr.splice(-1) // [8] 起始为负数 arr.splice(6,0,'javaScript') // [] arr // [1, 2, 3, 4, 5, 6, "javaScript", 7] arr.splice(6,2,'Vue') // 删除项["javaScript", 7] 替换元素 arr // 原数组[1, 2, 3, 4, 5, 6, "Vue"]
var arr = ['javaScript','HTML','Css']; arr.push('Vue'); // 4 arr // ["javaScript", "HTML", "Css", "Vue"] arr.push('Sass','Jq') // 6 arr // ["javaScript", "HTML", "Css", "Vue", "Sass", "Jq"]
pop()方法删除数组的最后一个元素,减小数组长度并返回删除的值。数组
var arr = ['JavaScript','Vue','React']; arr.pop() // "React" arr // ["JavaScript", "Vue"]
var arr = []; arr.unshift('Vue','JavaScript'); // 2 arr; // ["Vue", "JavaScript"]
var arr = ['JavaScript','Vue','React']; arr.shift(); // "JavaScript" arr; //["Vue", "React"]
var arr = ['JavaScript','Vue','React'] arr.reverse() // ["React", "Vue", "JavaScript"] arr //["React", "Vue", "JavaScript"]
sort() 方法将数组中的数组排序并返回排序后的数组(升序排列),sort()方法会调用每一个数组项的toString()方法转换成字符串,而后比较获得后的字符串,已肯定排列顺序;
(a) 若是数组里面的内容为字母,则以字母表的顺序排列(按照字符编码的顺序进行排序)。ide
var arr = ["React", "Vue", "JavaScript"]; arr.sort(); // ["JavaScript", "React", "Vue"]
(b) sort(sortFun) 参数sortFun 为一个函数函数
var arr = [78,56, 99, 9, 44,123,45,555,678,999,12,123]; arr.sort(); // [12, 123, 123, 44, 45, 555, 56, 678, 78, 9, 99, 999] 未传入函数参数 --------------------------------------------------- var arr = [78,56, 99, 9, 44,123,45,555,678,999,12,123]; arr.sort(function(a,b){ return a - b; // 返回 负数,0, 正数 }) // [9, 12, 44, 45, 56, 78, 99, 123, 123, 555, 678, 999]
[1,2,3].toString(); //"1,2,3" ['JavaScript','Vue','React'].toString(); //"JavaScript,Vue,React" [1,['JavaScript','Vue',{'title':'标题'}],2].toString(); // "1,JavaScript,Vue,[object Object],2"
toLocaleString()方法 把数组转换为本地字符串;编码
[1,2,3].toLocaleString() // "1,2,3" [new Date()].toLocaleString(); // "2018/6/2 上午11:50:12"
ECMAScript 5定义了9个新的数组方法来遍历、映射、过滤、检测、简化和搜索数组;spa
var data = [1,2,3,4,5,6]; var sum = 0; data.forEach((item) => { sum += item; // 求和 }); sum // 21 // 每一个数组元素自加1 data.forEach((item,index,list) => { list[index] = item + 1; }); data /// [2, 3, 4, 5, 6, 7] ------------------------------------ // 注意: forEach() 对于空数组是不会执行回调函数的 var data = []; data.forEach((item) => { console.log(item) // 不执行 }) // 注意,非数组调用报错 var data = ''; data.forEach((item) => { })
map() 方法按照原始数组元素顺序依次处理元素。code
注意: map() 不会对空数组进行检测。blog
注意: map() 不会改变原始数组。排序
var arr = [2,3,4,5,6,7,8]; var mapArr = arr.map((item) => { return Math.pow(item,3); // 返回每一项的的3次幂 }); mapArr // [8, 27, 64, 125, 216, 343, 512] arr // [2, 3, 4, 5, 6, 7, 8] 原数组不发生改变
true
的数组元素放进一个新数组中并返回。var arr = [2,4,6,8,10,15]; // 取数组小于 6 或者 大于 12 的数 arr.filter((item) => { return item < 6 || item > 12; // [2, 4, 15] }) // 取数组能整除2的数 arr.filter((item) => { return item%2 == 0; // [2, 4, 6, 8, 10] })
var arr = [1,2,3,4,5,6,7,8]; // 全部值小于10 arr.every((item) => { return item < 10; // true }); arr.every((item) => { return item < 4; // false })
some() 方法 当数组中至少存在一个元素调用断定函数返回true,它就返回true。
some() 方法会依次执行数组的每一个元素:
var arr = [2,4,6,8,10,15]; arr.some((item) => { return item < 2; // false }) arr.some((item) => { return item < 4; // true })
var arr = [1,2,3,4,5,6,7,8]; // 求和 arr.reduce((x,y) => { return x + y; },0); // 求最大值 arr.reduce((x,y) => { return x>y ? x : y; // 8 })
reduceRight()原理与reduce()同样,不一样的是reduceRight()按照数组从高到低处理数组。
var arr = [2,3,4]; //2^(3^4) 乘方从右到左 arr.reduceRight((x,y) => { return Math.pow(y,x); // 2.4178516392292583e+24 // return Math.pow(x,y); // 4096 })
var arr = ['javaScript','Vue','React','CSS3']; arr.indexOf('vue') // -1 arr.indexOf('CSS3'); // 3 arr.lastIndexOf('CSS3'); // 3 arr.lastIndexOf('Vue'); // 1