在开发中经常需要组装数据向API提交,或者从API响应数据过滤显示,这时 ofliterjs 库能快速解决数据处理问题。
OfilterJs 是一个用于 Javascript 的数据对象{}过滤处理器,为开发提供更简单、便捷、高效的数据处理操作。
$ npm i ofilterjs
或其他 pnpm、cnpm、yarn ...
$ pnpm i ofilterjs
import ofjs from 'ofilterjs'
// const ofjs = require('ofilterjs')
filterValue([数据对象], [配置项], ...[扩展数据])
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)
/** 结果
newData = {
name: 'ofilterjs',
versionNumber: 10001
}
*/
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)
/** 结果
newData = {
name: 'ofilterjs',
type: 'type 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)
/** 结果
newData = {
name: 'ofilterjs',
alias: 'Default alias',
type: 'Npm pkg'
}
*/
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)
/** 结果
newData = {
name: 'ofilterjs',
alias: 'This is ofilterjs',
type: 'Filter npm'
}
*/
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)
/** 结果
newData = {
name: 'ofilterjs',
support: ['js', 'ts', 'es'],
more: 'more data ...'
}
*/
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)
/** 结果
newData = {
name: 'ofilterjs',
name1: 'ofilter',
name2: 'object filter'
}
*/
getValue([名称访问字符串], [默认值])
const data = {
lib: {
pkg: {
name: 'ofilterjs',
version: 10001
},
support: ['js', 'ts', 'es']
}
}
// 原始方式
const name = data && data['lib'] && data['lib']['name'] && data['lib']['pkg']['name'] || 'unknown'
console.log(name) // ofilterjs
// es6的 ?. 方式
const name = data?.lib?.pkg?.name || 'unknown'
console.log(name) // ofilterjs
// 使用 ofilterjs 方式
const name = ofjs.getValue(data, 'lib.pkg.name', 'unknown')
console.log(name) // ofilterjs
const data = {
lib: {
pkg: {
name: 'ofilterjs',
alias: '',
version: 10001
},
support: ['js', 'ts', 'es']
}
}
// 原始方式
const currnet = data && data['lib'] && data['lib']['pkg'] || {}
const alias = currnet['alias'] || currnet['name'] || 'unknown'
console.log(alias) // ofilterjs
// es6的 ?. 方式
const alias = data?.lib?.pkg?.alias || data?.lib?.pkg?.name || 'unknown'
console.log(alias) // ofilterjs
// 使用 ofilterjs 方式
const alias = ofjs.getValue(data, 'lib.pkg.alias|lib.pkg.name', 'unknown')
console.log(name) // ofilterjs
const data = {
lib: {
pkg: {
name: 'ofilterjs',
alias: '',
version: 10001
},
support: ['js', 'ts', 'es']
}
}
// 原始方式
const support = data && data['lib'] && data['lib']['support'] || {}
const su = support[0] || 'unknown'
console.log(su) // js
// es6的 ?. 方式
const su = data?.lib?.support?.[0] || 'unknown'
console.log(su) // js
// 使用 ofilterjs 方式
const su = ofjs.getValue(data, 'lib.support.0', 'unknown')
console.log(su) // js
resetValue([数据对象], [配置,可选])
Tip: 默认情况下属性名带有 '_' 前缀的将不会参与自动重置,但可以使用手动配置指定.
浅重置(第一层有效)
const data = {
lib: {
pkg: {
name: 'ofilterjs',
alias: '',
version: 10001
},
support: ['js', 'ts', 'es'],
_private: 'private attr'
},
lib2: {
pkg: {}
}
}
ofjs.resetValue(data, false)
/** 结果
const data = {
lib: {},
lib2: {}
}
*/
深重置(默认所有层有效)
const data = {
lib: {
pkg: {
name: 'ofilterjs',
alias: '',
version: 10001
},
support: ['js', 'ts', 'es'],
_private: 'private attr'
},
lib2 : {
pkg: {
name: 'ofilter'
}
}
}
ofjs.resetValue(data, true)
/** 结果
const data = {
lib: {
pkg: {
name: '',
alias: '',
version: 0
},
support: [],
_private: 'private attr'
},
lib2 : {
pkg: {
name: ''
}
}
}
*/
深重置 - 指定深度层数,不指定起始位置(默认从0开始)
const data = {
// 0层
name: 'lib_list',
lib: {
// 1层
type: 'npm',
pkg: {
// 2层
name: 'ofilterjs',
alias: '',
version: 10001
},
support: {
'js' : 'javascript',
'ts' : 'typescript'
},
_private: 'private attr'
},
lib2 : {
type: 'npm',
pkg: {
name: 'ofilter'
}
}
}
// 2代表深度为2个层数,表示:0 ~ (0+2),不包含(0+2)
ofjs.resetValue(data, true, 2)
/** 结果
const data = {
// 0层
name: '', // 被重置
lib: {
// 1层
type: '', // 被重置
pkg: {
// 2层
name: 'ofilterjs',
alias: '',
version: 10001
},
support: {
'js' : 'javascript',
'ts' : 'typescript'
},
_private: 'private attr'
},
lib2 : {
type: '', // 被重置
pkg: {
name: 'ofilter'
}
}
}
*/
深重置 - 指定深度层数,也指定起始位置
const data = {
// 0层
name: 'lib_list',
lib: {
// 1层
type: 'npm',
pkg: {
// 2层
name: 'ofilterjs',
alias: '',
version: 10001,
support: {
// 3层
'js' : 'javascript',
'ts' : 'typescript'
}
},
_private: 'private attr'
},
lib2 : {
type: 'npm',
pkg: {
name: 'ofilter'
}
}
}
// 2代表深度为2个层数,表示:1 ~ (1+2),不包含(1+2)
ofjs.resetValue(data, true, 2, 1)
/** 结果
const data = {
// 0层
name: 'lib_list',
lib: {
// 1层
type: '', // 被重置
pkg: {
// 2层
name: '', // 被重置
alias: '', // 被重置
version: 0, // 被重置
support: {
// 3层
'js' : 'javascript',
'ts' : 'typescript'
}
},
_private: 'private attr'
},
lib2 : {
type: '', // 被重置
pkg: {
name: '' // 被重置
}
}
}
*/
const data = {
lib: {
pkg: {
name: 'ofilterjs',
alias: '',
version: 10001
},
support: ['js', 'ts', 'es'],
_private: 'private attr'
}
}
ofjs.resetValue(data, [
'lib.pkg.name',
'lib.pkg.version',
'lib.pkg._private'
])
/** 结果
const data = {
lib: {
pkg: {
name: '',
alias: '',
version: 0
},
support: ['js', 'ts', 'es'],
_private: ''
}
}
*/
const data = {
lib: {
pkg: {
name: 'ofilterjs',
alias: '',
version: 10001
},
support: ['js', 'ts', 'es']
}
}
ofjs.resetValue(data, {
'lib.pkg.name': 'newname',
'lib.pkg.version': 10002
})
/** 结果
const data = {
lib: {
pkg: {
name: 'newname',
alias: '',
version: 10002
},
support: ['js', 'ts', 'es']
}
}
*/
根据条件过滤一个对象数组,同时过滤掉未指定的键(key)。 使用 Array.filter() 根据断言 fn 过滤数组,以便返回条件为真值(truthy)的对象。 在过滤出来的数组上,使用 Array.map() 和 Array.reduce() 返回新的对象来过滤掉 keys 参数中未提供的键。 const reducedFilter = (data, keys, fn) => data.
问题内容: 我有一系列对象,我想知道搜索它的最佳方法。给定以下示例,我如何搜索和?jQuery有什么可以帮助的吗?还是我必须自己蛮力搜索? 问题答案: 您可以使用:
问题内容: 我在javascript中有一组对象。内容看起来像这样; 我想保留一些对象并删除其余的对象。如果object属性为2或34,则将保留对象。其他对象被删除。遗嘱的结果看起来像这样; 我正在使用node.js v6.91。 编辑:有人建议我使用过滤器来解决这种问题。欢迎使用过滤器技术的答案。 问题答案: 您可以尝试以下方法1和2: 方法1 :(使用) 注意:这将返回一个新数组,并且不会修改
我用这个函数从后端获取数据 和显示JSON,如下所示 我需要的是具有的数据,为此我创建 这部分代码显示为空。 请问如何使用
问题内容: 来自Twitter Search API的JSON趋势数据。 使用以下文件来抓取文件: 如何处理来自此对象的数据。作为数组?只需要从[name]值中提取数据即可。 JSON对象包含: 问题答案: 你的意思是这样的吗?
Apache Commons Collections库的CollectionUtils类为常见操作提供了各种实用方法,涵盖了广泛的用例。 它有助于避免编写样板代码。 这个库在jdk 8之前非常有用,因为Java 8的Stream API现在提供了类似的功能。 使用filter()方法过滤列表 CollectionUtils的filter()方法可用于过滤列表以删除不满足传递的谓词提供的条件的对象。
问题内容: 我有以下JavaScript数组的房地产主页对象: 我想做的是能够对对象执行过滤,以返回“家庭”对象的子集。 例如,我想根据能够过滤:,,,和。 如何在JavaScript中执行类似下面的伪代码的操作: 注意,语法不必与上面完全相同。这只是一个例子。 问题答案: 您可以使用以下方法: 现场示例: 此方法是新ECMAScript 5th Edition标准的一部分,几乎可以在所有现代浏览
永远不要信任外部输入。请在使用外部输入前进行过滤和验证。filter_var()和 filter_input() 函数可以过滤文本并对格式进行校验(例如 email 地址)。 外部输入可以是任何东西:$_GET 和 $_POST 等表单输入数据,$_SERVER 超全局变量中的某些值,还有通过 fopen('php://input', 'r') 得到的 HTTP 请求体。记住,外部输入的定义并不局