Coder Social home page Coder Social logo

deepick's Introduction

Intro

deepick is a tool used to select objects according to the depth of a given pattern.

Why?

The data returned by the interface often contains some useless information, sometimes this makes our work a lot of trouble, Especially when using Vue, we should avoid useless data being converted to reactive, at this time you can use deepick.

Install

NPM

npm install --save deepick

yarn

yarn add deepick

deepick released as a umd module. You can use it in any way for your favorite. You can get global variable deepick by serving as <script> tag.

Usage

Suppose we have the following objects:

const source = [
    {
        id: 1,
        name: 'hcy',
        email: '[email protected]',
        ctime: 1473675260,
        utime: 1501677125,
        carts: [
            {
                id: 100,
                name: 'Rose',
                price: '$9',
                ctime: 1372674220,
                utime: 1472574020,
            },
            {
                id: 101,
                name: 'Lily',
                price: '$8',
                ctime: 1372674230,
                utime: 1472574030,
            }
        ]
    },
    {
        id: 2,
        name: 'Chun Yang',
        email: '[email protected]',
        ctime: 1483675260,
        utime: 1521677125,
        carts: [
            {
                id: 200,
                name: 'candy',
                price: '$19',
                ctime: 1332373220,
                utime: 1412571020,
            },
            {
                id: 201,
                name: 'milk',
                price: '$80',
                ctime: 1322474430,
                utime: 1432571130,
            }
        ]
    }
]

For the above object, there are some properties that we do not want.So, we can specify a pattern to tell deepick which attributes are needed:

const partten = [
    {
        id: 'id',
        name: 'name',
        email: 'email',
        carts: [
            {
                name: 'name',
                price: 'price'
            }
        ]
    }
]

Then call the deepick function:

const res = deepick(source, partten)
console.log(res)

You will get a new object:

[
    {
        id: 1,
        name: 'hcy',
        email: '[email protected]',
        carts: [
            {
                name: 'Rose',
                price: '$9'
            },
            {
                name: 'Lily',
                price: '$8'
            }
        ]
    },
    {
        id: 2,
        name: 'Chun Yang',
        email: '[email protected]',
        carts: [
            {
                name: 'candy',
                price: '$19'
            },
            {
                name: 'milk',
                price: '$80'
            }
        ]
    }
]

If the attribute in the partten does not exist in the source object, a new property is automatically added to the new object by default:

source object:

{
    a: 1,
    b: 2
}

partten:

{
    a: 'a',
    // `c` property does not exist in the source object
    c: 'c'
}

Obtain a new object will automatically be added a new property c, the value is undefined:

{
    a: 1,
    c: undefined
}

Sometimes you do not want to use the default behavior, you can provide the third optional arguments deepick:

const res = deepick(source, partten, {
    warn: true
})
console.log(res)

If warn is true, you will get an error warning when the property in the schema do not exist in the source object:

`someProperty` is an undefined property on the source object

Contribution

Contributions are welcome! Open a pull request to fix a bug, or open an issue to discuss a new feature or change.

License

MIT

Copyright (c) 2017, HcySunYang

deepick's People

Contributors

hcysunyang avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.