How to use the pickBy function from lodash

Find comprehensive JavaScript lodash.pickBy code examples handpicked from public code repositorys.

lodash.pickBy is a function that creates a new object with all the properties that satisfy a specific condition.

297
298
299
300
301
302
303
304
305
306
module.exports.partial             = _.partial;
module.exports.partialRight        = _.partialRight;
module.exports.partition           = _.partition;
module.exports.partitionBy         = _.partitionBy;
module.exports.pick                = _.pick;
module.exports.pickBy              = _.pickBy;
module.exports.pickWhen            = _.pickWhen;
module.exports.pipeline            = _.pipeline;
module.exports.property            = _.property;
module.exports.propertyOf          = _.propertyOf;
fork icon19
star icon122
watch icon0

+ 92 other calls in file

32
33
34
35
36
37
38
39
40
41
const isDefined = (x) => !_.isUndefined(x);
const isNotEmpty = (x) => !_.isEmpty(x);
const isNotNull = (x) => x != null;
const isDefinedAndNotNull = (x) => isDefined(x) && isNotNull(x);
const isDefinedAndNotNullAndNotEmpty = (x) => isDefined(x) && isNotNull(x) && isNotEmpty(x);
const removeUndefinedValues = (obj) => _.pickBy(obj, isDefined);
const removeNullValues = (obj) => _.pickBy(obj, isNotNull);
const removeUndefinedAndNullValues = (obj) => _.pickBy(obj, isDefinedAndNotNull);
const removeUndefinedAndNullAndEmptyValues = (obj) => _.pickBy(obj, isDefinedAndNotNullAndNotEmpty);
const isBlank = (value) => _.isEmpty(_.toString(value));
fork icon77
star icon54
watch icon20

+ 4 other calls in file

How does lodash.pickBy work?

lodash.pickBy is a function that takes an object and a predicate function as arguments. It creates a new object with all the properties of the original object that satisfy the predicate function. The predicate function takes two arguments: the value of the property and the key of the property. If the predicate function returns a truthy value, the property is included in the new object. If the predicate function returns a falsy value, the property is not included in the new object.

Here's an example of how lodash.pickBy works:

javascript
const _ = require('lodash'); const obj = { name: 'John', age: 30, isMale: true, address: '123 Main St', phone: '555-555-5555' }; const newObj = _.pickBy(obj, (value, key) => { return key.length === 3 || value === true; }); console.log(newObj); // Output: { name: 'John', isMale: true }

In this example, we use lodash.pickBy to create a new object that includes only the properties with three-character keys or properties with boolean values. We pass the obj object as the first argument to lodash.pickBy, and a predicate function as the second argument.

The predicate function takes two arguments: value and key. In this example, we use an arrow function that returns true if the length of the key is 3, or if the value is true. This means that the new object will only include properties with three-character keys or properties with boolean values.

The resulting newObj object only includes the name and isMale properties of the original obj, since those are the only properties that satisfy the predicate function.

3937
3938
3939
3940
3941
3942
3943
3944
3945
    processErrors: function processErrors(errors) {
      return errors;
    },
    resetOnSuccess: true,
    successText: 'Success'
  }, lodash.pickBy(args, function (value) {
    return value !== undefined;
  }));
}
fork icon3
star icon15
watch icon0

698
699
700
701
702
703
704
705
706
707
708
709
710
console.log(omitBy); // => { 'b': '2' }


const pick = _.pick({ 'a': 1, 'b': '2', 'c': 3 }, ['a', 'c']);
console.log(pick); // => { 'a': 1, 'c': 3 }


const pickBy = _.pickBy({ 'a': 1, 'b': '2', 'c': 3 }, _.isNumber);
console.log(pickBy); // => { 'a': 1, 'c': 3 }


const result = _.result({ 'a': { 'b': () => 2 } }, 'a.b');
console.log(result); // => 2
fork icon0
star icon4
watch icon0

+ 15 other calls in file

Ai Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const _ = require("lodash");

const person = {
  name: "John Doe",
  age: 30,
  email: "",
  address: null,
  phone: "1234567890",
};

const filteredPerson = _.pickBy(person, Boolean);

console.log(filteredPerson);
// Output: { name: 'John Doe', age: 30, phone: '1234567890' }

In this example, _.pickBy(person, Boolean) creates a new object with only the properties having truthy values, which are name, age, and phone.

148
149
150
151
152
153
154
155
156
157
  schema.pre(key, populateFn);
});

// Add virtual key to provide populate and reverse populate
_.forEach(
  _.pickBy(definition.loadedModel, ({ type }) => type === 'virtual'),
  (value, key) => {
    schema.virtual(key, {
      ref: value.ref,
      localField: '_id',
fork icon0
star icon1
watch icon2

523
524
525
526
527
528
529
530
531
532
attendances = attendances.map((attendance, i) => {
    if (!attendance.source.photo) {
        attendance.source.photo = lodash.get(attendance, 'extra.photo', '')
    }
    attendance.logTime = moment(attendance.dateTime).format('hh:mm A')
    attendance = lodash.pickBy(attendance, function (a, key) {
        return ['_id', 'logTime', 'source', 'employee'].includes(key)
    });
    return attendance
})
fork icon0
star icon1
watch icon0

+ 4 other calls in file

1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
try {
  let resultFile = fs.join(options.testOutputDirectory, 'UNITTEST_RESULT.json');
  let lastRun = JSON.parse(fs.readFileSync(resultFile));
  let filter;
  filter = (obj) => {
    return _.pickBy(_.mapValues(obj, v => {
        if (typeof v === 'object' && v.status === false) {
          return filter(v);
        }
        return undefined;
fork icon809
star icon0
watch icon340

+ 2 other calls in file

19
20
21
22
23
24
25
26
27
28
  sendContinuousFeedbackDigestEmail,
  settingsReadByTeacher,
} = body
const parseDate = d => parseFromTimeZone(new Date(d), { timeZone: 'Europe/Helsinki' })

const updates = _.pickBy(
  {
    name,
    hidden,
    opensAt: opensAt ? startOfDay(parseDate(opensAt)) : undefined,
fork icon3
star icon9
watch icon6

1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
  if (f.isMain()) {
    await this.syncHost(hostbymac, ipv6AddrOld)
  }
})

this.hostsdb = _.pickBy(this.hostsdb, {_mark: true})
this.hosts.all = _.filter(this.hosts.all, {_mark: true})

this.hosts.all.sort(function (a, b) {
  return Number(b.o.lastActiveTimestamp || 0) - Number(a.o.lastActiveTimestamp || 0);
fork icon117
star icon456
watch icon48

+ 12 other calls in file

53
54
55
56
57
58
59
60
61
62
  fetchedMATICVaults = [],
  fetchedARBITRUMVaults = [],
  fetchedVaults,
  hasErrors = false

const tokensWithVault = pickBy(tokens, token => token.vaultAddress)

const ethVaultsBatches = chunk(
  Object.keys(tokensWithVault).filter(tokenId => tokens[tokenId].chain === CHAIN_TYPES.ETH),
  GET_VAULT_DATA_BATCH_SIZE,
fork icon2
star icon0
watch icon0

+ 4 other calls in file

60
61
62
63
64
65
66
67
68
69
70
71
        }
    }
];


exports.filterById = (pipelineStages, obj) => {
    const filters = _.pickBy(obj, (v) => v !== undefined);


    for (key in filters) {
        pipelineStages.push({ $match: { [key]: filters[key] } });
    }
fork icon0
star icon0
watch icon1

+ 7 other calls in file

17
18
19
20
21
22
23
24
25
26
const fullName = [
  rpnData?.lastName?._text,
  rpnData?.firstName?._text,
  rpnData?.secondName?._text,
].join(" ");
return _.pickBy(
  {
    iin: rpnData?.iin?._text,
    bdate: new Date(rpnData?.birthDate?._text),
    firstname: rpnData?.firstName?._text,
fork icon0
star icon0
watch icon1

+ 33 other calls in file

131
132
133
134
135
136
137
138
139
140

  return (_.has(filter, key) || _.has(filter, upperKey)) &&
    filter[key] !== value
}

obj = _.pickBy(obj, whereFilterHasSameKeyButDifferentValue)

if (_.isEmpty(obj)) {
  return undefined
}
fork icon0
star icon0
watch icon0

79
80
81
82
83
84
85
86
87
88
var incragg = _.mapValues(agg, (v) => _.sortBy(v, 'time'));

Promise.all(_.map(incragg, function (data, key) {
  var prev = {};
  var output = _.chain(data).map(function (item) {
    var times = _.pickBy(item.times, function (time, key) {
      if (!_.isEqual(time, prev[key])) {
        prev[key] = _.clone(time);
        return true;
      }
fork icon0
star icon0
watch icon1

+ 26 other calls in file

41
42
43
44
45
46
47
48
49
50

_.forEach(strapi.api, (api, apiName) => {
  const controllers = _.reduce(
    api.controllers,
    (acc, controller, controllerName) => {
      const contentApiActions = _.pickBy(controller, isContentApi);

      if (_.isEmpty(contentApiActions)) {
        return acc;
      }
fork icon0
star icon0
watch icon1

386
387
388
389
390
391
392
393
394
395
}

let response = await ProxiedRequest.get(url,body,metricsTracker)
let res = await response.text()
let parsedTables = await parseYahooHtml(res);
let shortPercentOfSharesOutStanding = _.pickBy(parsedTables, (value, key) => _.includes(key, "Short % of Shares Outstanding"))
let shortPercentOfSharesOutStandingVal = Object.values(shortPercentOfSharesOutStanding)[0]

results = {
    symbol: ticker,
fork icon0
star icon0
watch icon1

38
39
40
41
42
43
44
45
46
47
48
49
50


const updateFile = (file) => {
  let { path } = file;
  if (!path) throw new Error("updateFile require .path");


  const newFields = _.pickBy(file, (v) => v !== undefined);


  if (CACHE[path]) {
    CACHE[path] = {
      ...CACHE[path],
fork icon0
star icon0
watch icon1

+ 11 other calls in file

96
97
98
99
100
101
102
103
104
105
const traders1 = _.filter(contractlist, (item) => item.ret_code === retail.ret_code)
const traders2 = _.filter(pricelist, (item) => item.ret_code === retail.ret_code)
const traders = _.uniqBy(traders1.concat(traders2), 'trd_code')

// ลบ field ที่มีค่า null ออก
retail = _.pickBy(retail, (v) => v !== null && v !== undefined && v !== '')
// ลบ field ที่ไม่ต้องการนำเข้าข้อมูลออก
let retattributes = _.omit(retail, [
  'fax',
  'create_by',
fork icon0
star icon0
watch icon1

+ 3 other calls in file

196
197
198
199
200
201
202
203
204
205
206
  } else console.log('No need to update base skill data.');
});


function parseElites(source) {
  const elites = [];
  const data = _.pickBy(source, (v, k) => /^精\d+材料\d+$/.test(k));
  _.each(data, (v, k) => {
    if (!(v = getCorrectMaterialName(v))) return;
    const index = /^精(?<index>\d+)材料\d+$/.exec(k).groups.index - 1;
    if (!elites[index]) elites[index] = {};
fork icon0
star icon0
watch icon1

+ 19 other calls in file

188
189
190
191
192
193
194
195
196
197
    {}
  );
  Object.freeze(character);
}
const nameId2Name = _.transform(
  _.pickBy(characterTable, (v, k) => k.startsWith('char_')),
  (obj, { name }, id) => {
    const shortId = id.replace(/^char_/, '');
    obj[shortId] = name;
    if (recruitmentList.includes(name)) character[shortId].recruitment.push(langEnum[langShort]);
fork icon0
star icon0
watch icon1

+ 29 other calls in file

Other functions in lodash

Sorted by popularity

function icon

lodash.get is the most popular function in lodash (7670 examples)