# 操作 Object 常用方法

# isValid: 有效值

/**
 * 有效值
 * @param {any} val 要判断的值
 */
export function isValid(val: any): Boolean {
    return !!val || val === 0
}
ok
1
2
3
4
5
6
7

# pick: 挑选属性,返回新对象

浅拷贝

/**
 * 返回指定属性后的对象, 不改变源对象
 * 参考 lodash : https://lodash.com/docs/4.17.15#pick
 * @param {Object} obj 目标对象
 * @param {String[]} keys 指定的对象属性
 * @example
 *
 * var object = { 'a': 1, 'b': '2', 'c': 3 };
 *
 * pick(object, ['a', 'c']);
 * // => { 'a': 1, 'c': 3 }
 */

interface Obj {
    [key: string]: any
}
export function pick(obj: Obj, keys: string[]): object {
    return keys.reduce((acc, cur) => (isValid(obj[cur]) && (acc[cur] = obj[cur]), acc), {} as Obj)
}

ok
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# omit: 忽略属性,返回新对象

浅拷贝

/**
 * 返回忽略属性后的对象, 不改变源对象
 * 参考 lodash : https://lodash.com/docs/4.17.15#omit
 * @param {Object} obj 目标对象
 * @param {String[]} keys 要忽略的对象属性
 * @example
 *
 * var object = { 'a': 1, 'b': '2', 'c': 3 };
 *
 * omit(object, ['a', 'c']);
 * // => { 'b': '2' }
 */

export function omit(obj: object, keys: string[]): object {
    return keys.reduce((acc, cur) => (delete acc[cur], acc), { ...obj } as { [key: string]: any })
}
ok
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16