一、用过的数组、集合过滤处理方法
该文章中的定义:
- 集合: 数组中的元素是对象
- 数组:数组中的元素是基本数据
1 、从集合
中筛选出数组
中有的值
const arr = [
{ name: 'Jose', age: 18, sex: '男' },
{ name: 'jack', age: 19, sex: '男' },
{ name: 'Tim', age: 28, sex: '男' },
]
const names = ['Jose', 'jack']
const fillter = arr.filter(item => names.includes(item.name))
// 以下此方法一样 indexOf
// const fillter = arr.filter(item => names.indexOf(item.name))
//output:
[{ name: 'Jose', age: 18, sex: '男' },
{ name: 'jack', age: 19, sex: '男' }]
2、从A集合
中剔除B集合
中有的值
const arr = [
{ id: 1001, name: 'Jose', age: 18, sex: '男' },
{ id: 1002, name: 'jack', age: 19, sex: '男' },
{ id: 1003, name: 'Tim', age: 28, sex: '男' },
]
const data = [
{ id: 1001, name: 'Jose', age: 18, sex: '男' },
{ id: 1002, name: 'jack', age: 19, sex: '男' },
]
const filterarr = arr.filter(x => !data.some(item => x.id === item.id))
//output:
[{ id: 1003, name: 'Tim', age: 28, sex: '男' }]
3、数组交集、并集、差集
let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
// 并集
let union = new Set([...a, ...b]); // Set {1, 2, 3, 4}
// 交集
let intersect = new Set([...a].filter(x => b.has(x))); // set {2, 3}
// (a 相对于 b 的)差集
let difference = new Set([...a].filter(x => !b.has(x))); // Set {1}
二、常用方法
1、true false 数字互转
布尔值转数字
var a = true a*1 = 1 +a = 1
var b = false b*1 = 0 +b = 0
数字转布尔值
var c = 1 !!c = true
var d = 0 !!d = false
2、生成唯一id
Date.now().toString(36) + Math.random().toString(36).substr(2);
const gen_guid = () => {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
}
3、将00000…切掉
将00000.....切掉
toIndex= toIndex.replace(/\b(0+)/gi,"");
4、判断是否是谷歌浏览器
const isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
三、正则
1、匹配邮箱
//完整版
const validateEmail = email => {
return String(email)
.toLowerCase()
.match(
/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
) }
//精简版
function validateEmail(email) {
return (/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/).test(email)
}