Skip to content

πŸ–– OfilterJs is a data object filter processor for Javascript, which provides simpler, more convenient and more efficient data operations for development.

License

Notifications You must be signed in to change notification settings

wenlng/ofilter-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

41 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

OfilterJS

Data Filter Processor Of Javascript Object

Downloads Downloads

English | δΈ­ζ–‡

πŸ–– OfilterJs is a data object filter processor for Javascript, which provides simpler, more convenient and more efficient data operations for development.

⭐️ If it helps you, please give a star.


Supported languages

  • Javascript
  • TypeScript

Methods

  • πŸ‘ filterValue
  • 🍐 getValue
  • 🍎 resetValue

Install Module

$ npm i ofilterjs

Or pnpm, Or cnpm, Or yarn ...

$ pnpm i ofilterjs

Import Module

  const ofjs = require('ofilterjs')
 
 // import ofjs from 'ofilterjs'

Browser

<script src="https://unpkg.com/[email protected]/dist/ofilterjs.global.min.js"></script>

<script>
    console.log(ofilterjs)
</script>

1. Data Filter

filterValue([Object{}], [Config], ...[extraData])

1.1 Filter or Recombine for data

const data = {
    lib: {
        pkg: {
            name: 'ofilterjs',
            alias: '',
            version_number: 10001
        }
    }
}

const newData = ofjs.filterValue(data, {
    name: 'lib.pkg.name',
    versionNumber: 'lib.pkg.version_number',
})
console.log(newData)

/** result
   newData = {
        name: 'ofilterjs',
        versionNumber: 10001
   } 
*/

1.2 Set value

const data = {
    lib: {
        pkg: {
            name: 'ofilterjs',
            alias: '',
            version_number: 10001
        }
    }
}

const newData = ofjs.filterValue(data, {
    name: 'lib.pkg.name',
    type: {
        value: 'type value'
    }
})
console.log(newData)

/** result
   newData = {
        name: 'ofilterjs',
        type: 'type value'
   } 
*/

1.3 Set default value

const data = {
    lib: {
        pkg: {
            name: 'ofilterjs',
            alias: '',
            version_number: 10001
        }
    }
}

const newData = ofjs.filterValue(data, {
    name: 'lib.pkg.name',
    alias: {
        key: 'lib.pkg.alias',
        default: 'Default alias'
    },
    type: {
        key: 'lib.pkg.type',
        default: 'Npm pkg'
    }
})
console.log(newData)

/** result
   newData = {
        name: 'ofilterjs',
        alias: 'Default alias',
        type: 'Npm pkg'
   } 
*/

1.4 Custom filter callback

const data = {
    lib: {
        pkg: {
            name: 'ofilterjs',
            alias: '',
            version_number: 10001
        }
    }
}

const newData = ofjs.filterValue(data, {
    name: 'lib.pkg.name',
    alias: {
        key: 'lib.pkg.alias',
        filter: (value, source) => {
            if (value !== '') return value
            return 'This is ' + (source?.lib?.pkg?.name || 'unknown')
        }
    },
    type: {
        key: 'lib.pkg.type',
        filter: (value, source) => {
            return 'Filter npm'
        }
    }
})
console.log(newData)

/** result
   newData = {
        name: 'ofilterjs',
        alias: 'This is ofilterjs',
        type: 'Filter npm'
   } 
*/

1.5 Merge data of filter return to result

const data = {
    lib: {
        pkg: {
            name: 'ofilterjs',
            alias: '',
            version_number: 10001
        }
    }
}

const newData = ofjs.filterValue(data, {
    name: 'lib.pkg.name',
    _: {
        merge: true,
        filter: (_, source) => {
            if (source?.lib?.pkg?.name === 'ofilterjs') {
                return {
                   support: ['js', 'ts', 'es']
                }
            }
            return {}
        }
    },
    _1: {
        merge: true,
        filter: (_, source) => {
            return { more: 'more data ...' }
        }
    },
  }
})
console.log(newData)

/** result
   newData = {
        name: 'ofilterjs',
        support: ['js', 'ts', 'es'],
        more: 'more data ...'
   } 
*/

1.6 Merge extra data to result

const data = {
    lib: {
        pkg: {
            name: 'ofilterjs',
            alias: '',
            version_number: 10001
        }
    }
}

const newData = ofjs.filterValue(data, {
    name: 'lib.pkg.name'
  }
}, {
    name1: 'ofilter'
}, {
    name2: 'object filter'
})
console.log(newData)

/** result
   newData = {
        name: 'ofilterjs',
        name1: 'ofilter',
        name2: 'object filter'
   } 
*/

2. Read Data

getValue([nameStr], [defaultValue])

2.1 Read Value / Deep Read for value

const data = {
    lib: {
        pkg: {
            name: 'ofilterjs',
            version: 10001
        },
        support: ['js', 'ts', 'es']
    }
}

const name = ofjs.getValue(data, 'lib.pkg.name', 'unknown')
console.log(name)   // ofilterjs

2.2 Priority reading value

const data = {
    lib: {
        pkg: {
            name: 'ofilterjs',
            alias: '',
            version: 10001
        },
        support: ['js', 'ts', 'es']
    }
}

const alias = ofjs.getValue(data, 'lib.pkg.alias|lib.pkg.name', 'unknown')
console.log(name)   // ofilterjs

2.3 Array index read

const data = {
    lib: {
        pkg: {
            name: 'ofilterjs',
            alias: '',
            version: 10001
        },
        support: ['js', 'ts', 'es']
    }
}

const su = ofjs.getValue(data, 'lib.support.0', 'unknown')
console.log(su)   // js

3. Reset Data

resetValue([Object{}], [Config,?Optional])

Tip: Prefixes with '_' attribute names will not be reset automatically.

3.1 Auto set at data type

Shallow Reset

const data = {
    lib: {
        pkg: {
            name: 'ofilterjs',
            alias: '',
            version: 10001
        },
        support: ['js', 'ts', 'es'],
        _private: 'private attr'  
    },
    lib2: {
        pkg: {
            name: 'ofilter'
        }
    }
}

ofjs.resetValue(data, false)

/**  result
const data = {
    lib: {},
    lib2: {}
}
*/

Depth Reset

const data = {
    lib: {
        pkg: {
            name: 'ofilterjs',
            alias: '',
            version: 10001
        },
        support: ['js', 'ts', 'es'],
        _private: 'private attr'  
    },
    lib2: {
        pkg: {
            name: 'ofilter'
        }
    }
}

ofjs.resetValue(data, true)

/**  result
const data = {
    lib: {
        pkg: {
            name: '',
            alias: '',
            version: 0
        },
        support: [],
        _private: 'private attr'
    },
    lib2: {
        pkg: {
            name: ''
        }
    }
}
*/

Depth Reset, Set depth layer parameter

const data = {
    // level 0
    name: 'lib_list',
    lib: {
        // level 1
        type: 'npm',
        pkg: {
            // level 2
            name: 'ofilterjs',
            alias: '',
            version: 10001
        },
        support: {
            'js' : 'javascript',
            'ts' : 'typescript'
        },
        _private: 'private attr' 
    },
    lib2 : {
        type: 'npm',
        pkg: {
            name: 'ofilter'
        }
    }
}

// 0 ~ (0+2)
ofjs.resetValue(data, true, 2)

/**  result
const data = {
    // level 0
    name: '',   // Was reset
    lib: {
        // level 1
        type: '',   // Was reset
        pkg: {
            // level 2
            name: 'ofilterjs',
            alias: '',
            version: 10001
        },
        support: {
            'js' : 'javascript',
            'ts' : 'typescript'
        },
        _private: 'private attr' 
    },
    lib2 : {
        type: '',   // Was reset
        pkg: {
            name: 'ofilter'
        }
    }
}
*/

Depth Reset, Set depth layer and start position parameter

const data = {
    // level 0
    name: 'lib_list',
    lib: {
        // level 1
        type: 'npm',
        pkg: {
            // level 2
            name: 'ofilterjs',
            alias: '',
            version: 10001,
            support: {
                // level 3
                'js' : 'javascript',
                'ts' : 'typescript'
            }
        },
        _private: 'private attr' 
    },
    lib2 : {
        type: 'npm',
        pkg: {
            name: 'ofilter'
        }
    }
}

// 1 ~ (1+2)
ofjs.resetValue(data, true, 2, 1)

/**  result
const data = {
    // level 0
    name: 'lib_list',
    lib: {
        // level 1
        type: '',   // Was reset
        pkg: {
            // level 2
            name: '',   // Was reset
            alias: '',  // Was reset
            version: 0, // Was reset
            support: {
                // level 3
                'js' : 'javascript',
                'ts' : 'typescript'
            }
        },
        _private: 'private attr' 
    },
    lib2 : {
        type: '',   // Was reset
        pkg: {
            name: ''    // Was reset
        }
    }
}

3.2 Configuration reset field

const data = {
    lib: {
        pkg: {
            name: 'ofilterjs',
            alias: '',
            version: 10001
        },
        support: ['js', 'ts', 'es']
    }
}

ofjs.resetValue(data, [
    'lib.pkg.name',
    'lib.pkg.version'
])

/**  result
const data = {
    lib: {
        pkg: {
            name: '',
            alias: '',
            version: 0
        },
        support: ['js', 'ts', 'es']
    }
}
*/

3.3 Configuration set data

const data = {
    lib: {
        pkg: {
            name: 'ofilterjs',
            alias: '',
            version: 10001
        },
        support: ['js', 'ts', 'es']
    }
}

// us ofilterjs
ofjs.resetValue(data, {
    'lib.pkg.name': 'newname',
    'lib.pkg.version': 10002
})

/** result
const data = {
    lib: {
        pkg: {
            name: 'newname',
            alias: '',
            version: 10002
        },
        support: ['js', 'ts', 'es']
    }
}
*/

Buy the author coffee: http://witkeycode.com/sponsor


LICENSE

MIT

About

πŸ–– OfilterJs is a data object filter processor for Javascript, which provides simpler, more convenient and more efficient data operations for development.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published