数字
小数向下取整,和
Math.floor()类似resultTotal为string或number时,都能正常转换resultTotal为null、undefined、''、对象、数组时,值为0
~~resultTotal
数组
无论fields是
string还是string[],将fields统一转成string[]
const fieldList = ([] as string[]).concat(fields)
过滤数组中为空的元素
- Boolean 是一个函数,它会对遍历数组中的元素,并根据元素的真假类型,对应返回 true 或 false
schemas.map((item) => item.field).filter(Boolean)
插入指定行
schemaList.splice(index + 1, 0, schemaItem)
对象
删除对象中的某个属性
Reflect.deleteProperty(item, 'field')
数组去重,比较对象某个属性
import { cloneDeep, uniqBy } from 'lodash-es';
uniqBy(schemas, 'field')
往对象中增加属性
Object.assign(target, sources)
判断
常用类型判断
import { isObject, isFunction, isBoolean, isEmpty } from 'lodash-es';
// 判断是否为布尔
isBoolean(data)
// 判断是否为对象
isObject(data)
// 判断是否为函数
isFunction(data)
// 判断是否为数组
Array.isArray(data)
// 判断是否为空
// 对于 null、undefined、空字符串、空数组以及空对象,函数都返回 true
isEmpty(data)
判断两个值是否相同
Object.is(value1, value2)
判断对象中是否存在某个属性
Reflect.has(item, 'field')
判断对象深处的空值
import { each, get } from 'lodash-es';
let arr = [
{ id: 1, tit: "ttt1" },
{ id: 2, tit: "ttt2", bb: { cc: { dd: 12 } } },
{ id: 3, tit: "ttt3", bb: {} },
{ id: 5, tit: "ttt5", bb: { cc: { dd: "" } } },
{ id: 6, tit: "ttt6", bb: { cc: { dd: null } } },
];
each(arr, (item) => {
let flag = get(item, ["bb", "cc", "dd"]);
if (flag) {
console.log(item);
}
});
其它
变量为false时才进行赋值操作
let x = 10;
let y = 0;
x ||= 5; // x仍为10,因为10被视为真值
y ||= 5; // y现在为5,因为0被视为假值
- 获取树结构中所有的key
const getAllKeys = (treeData: any[], defaultKeys = []) => {
return treeData.reduce((prev, curr: API.DeptEntity) => {
prev.push(curr.id);
if (curr.children?.length) {
getAllKeys(curr.children, prev);
}
return prev;
}, defaultKeys);
}
- 筛选出符合关键字的树结构
const filterDeptByKeyword = (treeData: API.DeptEntity[], keyword = '') => {
return treeData.filter((item) => {
if (item.children?.length) {
item.children = filterDeptByKeyword(item.children, keyword);
if (item.children.length) {
return true;
}
}
return item.name?.includes(keyword);
});
};