记录一些 巧妙使用数组、字符串方法的方式
1.数组合并
var arr1=[1,2,3];
var arr2=[4,5,6];
[].push.apply( arr1, arr2 ); //利用apply可以传入数组参数的特点
console.log(arr1); //[1,2,3,4,5,6];
2集合合并
var lis = document.getElementsByTagName("li");
var ps = document.getElementsByTagName("p");
var arr = [];
[].push.apply(arr,lis); // 集合不能使用数组的方法,但是集合本身是伪数组,可以遍历,所以可以当做参数传入
[].push.apply(arr,ps);
[...lis, ...p]; // ES6
3.字符串转数组
var arr = 'red,green,blue,yellow'.split(",");
console.log(arr); //['red','green','blue','yellow']
4.计算总和
方法1
var arr = [1,2,3,4,5];
var sum = arr.reduce(function (first, second){
return first + second;
});
console.log(sum); //15
方法2
var arr = [1,2,3,4,5];
var sum = eval(arr.join("+"));
console.log(sum); //15
5.二维数组 指定成员 求最大值
var data = [ [ 10, 20 ], [ 15, 13 ], [ 17, 30 ], [ 30, 10 ], [ 20, 15 ] ];
var dataMax = Math.max.apply(null, data.map( function ( v ) { return v[ 0 ]}));
6.插一条正则
1.转换日期
var date = '1991-1-19'.replace( /(\d+)-(\d+)-(\d+)/, '$1年$2月$3日');
2.简单去重
var str = 'aaaabbb....ccdddd....dd...fff...不不不';
newStr = str.replace(/\./g, ''); //去除点符号;
newStr = str.replace(/(.)\1+/g, '$1');
console.log(newStr);
7.快速排序 之 函数式编程
var arr = [1, 4, 3, 2, 5, 0, -3, -1, -2];
var qs = (fn) => ([p, ...right]) =>
p === undefined ? [] : [
...qs(fn)(right.filter(a => fn(a, p))),
p,
...qs(fn)(right.filter(a => !fn(a, p)))
]
qs((a, b) => a < b)(arr)
8.数组去重
arr.filter((v, i) => arr.indexOf(v) === i) // ES5
[...new Set(arr)] // ES6