Socket
Socket
Sign inDemoInstall

map-visit

Package Overview
Dependencies
8
Maintainers
2
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    map-visit

Map `visit` over an array of objects.


Version published
Weekly downloads
11M
decreased by-3.03%
Maintainers
2
Install size
69.9 kB
Created
Weekly downloads
 

Package description

What is map-visit?

The map-visit npm package is designed to map over the properties of an object and apply a function to each property's value. It is particularly useful for manipulating and transforming object properties in a flexible and customizable way.

What are map-visit's main functionalities?

Mapping over object properties

This feature allows you to iterate over each property of an object and apply a function to its value. In the provided code sample, the function converts each property value to uppercase and logs it along with its key.

const mapVisit = require('map-visit');
const obj = { a: 'foo', b: 'bar' };
mapVisit(obj, (value, key) => console.log(key, value.toUpperCase()));

Other packages similar to map-visit

Readme

Source

map-visit NPM version NPM downloads Build Status

Map visit over an array of objects.

Install

Install with npm:

$ npm install --save map-visit

Usage

var mapVisit = require('map-visit');

Assign or Merge vs. Visit

Let's say you want to add a set method to your application that will:

  • set key-value pairs on a data object
  • extend objects onto the data object
  • extend arrays of objects onto the data object

Example using extend

Here is one way to accomplish this using Lo-Dash's extend:

var _ = require('lodash');

var obj = {
  data: {},
  set: function (key, value) {
    if (Array.isArray(key)) {
      _.extend.apply(_, [obj.data].concat(key));
    } else if (typeof key === 'object') {
      _.extend(obj.data, key);
    } else {
      obj.data[key] = value;
    }
  }
};

obj.set('a', 'a');
obj.set([{b: 'b'}, {c: 'c'}]);
obj.set({d: {e: 'f'}});

console.log(obj.data);
//=> {a: 'a', b: 'b', c: 'c', d: { e: 'f' }}

The above approach works fine for most use cases. But if you also want to emit an event each time a property is added to the data object. A better approach would be to use visit.

Example using visit

In this approach, when an array is passed to set, mapVisit calls set on each object in the array. When an object is passed, visit calls set on each property in the object. As a result, the data event will be emitted every time a property is added to data.

var mapVisit = require('map-visit');
var visit = require('object-visit');

var obj = {
  data: {},
  set: function (key, value) {
    if (Array.isArray(key)) {
      mapVisit(obj, 'set', key);
    } else if (typeof key === 'object') {
      visit(obj, 'set', key);
    } else {
      // some event-emitter
      console.log('emit', key, value);
      obj.data[key] = value;
    }
  }
};

obj.set('a', 'a');
obj.set([{b: 'b'}, {c: 'c'}]);
obj.set({d: {e: 'f'}});
obj.set({g: 'h', i: 'j', k: 'l'});

console.log(obj.data);
//=> {a: 'a', b: 'b', c: 'c', d: { e: 'f' }, g: 'h', i: 'j', k: 'l'}

// events would look something like:
// emit a a
// emit b b
// emit c c
// emit d { e: 'f' }
// emit g h
// emit i j
// emit k l

About

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

Building docs

(This document was generated by verb-generate-readme (a verb generator), please don't edit the readme directly. Any changes to the readme must be made in .verb.md.)

To generate the readme and API documentation with verb:

$ npm install -g verb verb-generate-readme && verb

Running tests

Install dev dependencies:

$ npm install -d && npm test

Author

Jon Schlinkert

License

Copyright © 2016, Jon Schlinkert. Released under the MIT license.


This file was generated by verb, v0.9.0, on August 05, 2016.

Keywords

FAQs

Last updated on 05 Aug 2016

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc