source: node_modules/es-toolkit/dist/compat/object/pick.js

Last change on this file was a762898, checked in by istevanoska <ilinastevanoska@…>, 5 months ago

Added visualizations

  • Property mode set to 100644
File size: 1.4 KB
Line 
1'use strict';
2
3Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
5const get = require('./get.js');
6const has = require('./has.js');
7const set = require('./set.js');
8const isArrayLike = require('../predicate/isArrayLike.js');
9const isNil = require('../predicate/isNil.js');
10
11function pick(obj, ...keysArr) {
12 if (isNil.isNil(obj)) {
13 return {};
14 }
15 const result = {};
16 for (let i = 0; i < keysArr.length; i++) {
17 let keys = keysArr[i];
18 switch (typeof keys) {
19 case 'object': {
20 if (!Array.isArray(keys)) {
21 if (isArrayLike.isArrayLike(keys)) {
22 keys = Array.from(keys);
23 }
24 else {
25 keys = [keys];
26 }
27 }
28 break;
29 }
30 case 'string':
31 case 'symbol':
32 case 'number': {
33 keys = [keys];
34 break;
35 }
36 }
37 for (const key of keys) {
38 const value = get.get(obj, key);
39 if (value === undefined && !has.has(obj, key)) {
40 continue;
41 }
42 if (typeof key === 'string' && Object.hasOwn(obj, key)) {
43 result[key] = value;
44 }
45 else {
46 set.set(result, key, value);
47 }
48 }
49 }
50 return result;
51}
52
53exports.pick = pick;
Note: See TracBrowser for help on using the repository browser.