pick.js

import castArray from './castArray';
import isObject from './isObject';
/**
 * 创建一个从 `object` 选中的属性的对象。
 *
 * 允许选取对象的所有属性(包含不可枚举属性)。
 *
 * @alias module:Object.pick
 * @since 1.0.0
 * @param {Object} object 来源对象。
 * @param {string | string[]} [fields] 选中的属性。
 * @returns {Object} 新对象。
 * @example
 *
 * const obj = { name: "jeff", age: 18 };
 *
 * pick(obj); // {}
 *
 * // 选取单个属性
 * pick(obj, 'name'); // { name: "jeff" }
 *
 * // 选取多个属性
 * pick(obj, ['name', 'age']); // { name: "jeff", age: 18 }
 */
function pick(object, fields = []) {
    const result = {};
    if (!isObject(object)) {
        return result;
    }
    const fieldArr = castArray(fields);
    fieldArr.forEach((field) => {
        if (field in object) {
            result[field] = object[field];
        }
    });
    return result;
}
export default pick;