🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

complex-utils-next

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

complex-utils-next - npm Package Compare versions

Comparing version
2.0.3
to
2.0.4
+38
src/object/getComplexProp.ts
import getPropByList from './getPropByList'
/**
* 根据'mainprop.prop'格式字符串获取对象值
* @param {object} value 对应对象
* @param {string} prop 对应属性
* @param {boolean} [intervalRepeat] 分隔符.重复判断值, 默认为否;为真时连续.会全部删除,为否时连续和开始结束分隔符会保留,此时.视为属性,.a直接取[.a],a..b取[.a][.b],理论上无法对[a.]取值
* @param {boolean} [showError] 显示错误输出
* @returns
*/
function getComplexProp(value: undefined | Record<PropertyKey, unknown>, prop: string, intervalRepeat = false, showError?: boolean) {
if (!value || !prop) {
return undefined
} else {
const interval = '.'
const originPropList = prop.split(interval)
const propList = []
let lastEmpty = 0
for (let n = 0; n < originPropList.length; n++) {
let originProp = originPropList[n]
if (originProp) {
if (lastEmpty && !intervalRepeat) {
originProp = interval.repeat(lastEmpty) + originProp
lastEmpty = 0
}
propList.push(originProp)
} else {
lastEmpty++
}
}
if (lastEmpty) {
propList.push(interval.repeat(lastEmpty))
}
return getPropByList(value, propList, showError)
}
}
export default getComplexProp
import setPropByList from './setPropByList'
/**
* 根据a.b字符串设置属性
* @param {*} targetData 对应对象
* @param {string} prop 属性字符串a.b,,父属性不存在时会创建对象
* @param {*} value 属性值
* @param {boolean} [useSetData] 为真时通过setData进行赋值操作,主要针对框架中直接赋值无法响应的操作
* @returns {boolean} 设置是否成功
*/
function setComplexProp(targetData: Record<PropertyKey, unknown>, prop: string, value: unknown, useSetData?: boolean) {
if (!targetData || !prop) {
return false
} else {
const propList = prop != '.' ? prop.split('.') : [prop]
setPropByList(targetData, propList, value, useSetData)
return true
}
}
export default setComplexProp
+4
-0

@@ -7,1 +7,5 @@

- 添加observe/reactive模块
### 2.0.4
- 简化setProp/getProp函数
- 添加setComplexProp/getComplexProp函数

@@ -34,2 +34,3 @@ // class加载

import getProp from './src/object/getProp'
import getComplexProp from './src/object/getComplexProp'
import getPropByList from './src/object/getPropByList'

@@ -42,2 +43,3 @@ import hasProp from './src/object/hasProp'

import setProp from './src/object/setProp'
import setComplexProp from './src/object/setComplexProp'
import setPropByList from './src/object/setPropByList'

@@ -145,2 +147,3 @@ import setPropByType from './src/object/setPropByType'

getProp,
getComplexProp,
getPropByList,

@@ -153,2 +156,3 @@ hasProp,

setProp,
setComplexProp,
setPropByList,

@@ -155,0 +159,0 @@ setPropByType,

+1
-1
{
"name": "complex-utils-next",
"version": "2.0.3",
"version": "2.0.4",
"description": "a complex utils",

@@ -5,0 +5,0 @@ "main": "index.ts",

import getPropByList from './getPropByList'
/**
* 根据'mainprop.prop'格式字符串获取对象值
* 根据'mainprop.prop'格式字符串获取对象值 // 此函数认为targetData和prop必然存在,不做单独校验
* @param {object} value 对应对象
* @param {string} prop 对应属性
* @param {boolean} [intervalRepeat] 分隔符.重复判断值, 默认为否;为真时连续.会全部删除,为否时连续和开始结束分隔符会保留,此时.视为属性,.a直接取[.a],a..b取[.a][.b],理论上无法对[a.]取值
* @param {boolean} [showError] 显示错误输出
* @returns
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function getProp(value: undefined | Record<PropertyKey, any>, prop: string, intervalRepeat = false, showError?: boolean) {
if (!value || !prop) {
return undefined
} else {
const interval = '.'
const originPropList = prop.split(interval)
const propList = []
let lastEmpty = 0
for (let n = 0; n < originPropList.length; n++) {
let originProp = originPropList[n]
if (originProp) {
if (lastEmpty && !intervalRepeat) {
originProp = interval.repeat(lastEmpty) + originProp
lastEmpty = 0
}
propList.push(originProp)
} else {
lastEmpty++
}
}
if (lastEmpty) {
propList.push(interval.repeat(lastEmpty))
}
return getPropByList(value, propList, showError)
}
function getProp(value: Record<PropertyKey, unknown>, prop: string, showError?: boolean) {
const propList = prop.indexOf('.') > -1 ? prop.split('.') : [prop]
return getPropByList(value, propList, showError)
}
export default getProp

@@ -1,2 +0,2 @@

/* eslint-disable @typescript-eslint/no-explicit-any */
/**

@@ -9,3 +9,3 @@ * 根据属性列表获取对象属性

*/
function getPropByList(value: Record<PropertyKey, any>, propList: string[] | number[], showError?: boolean): any {
function getPropByList(value: Record<PropertyKey, unknown>, propList: string[] | number[], showError?: boolean): unknown {
let data = value

@@ -16,3 +16,3 @@ try {

if (prop || prop === 0) {
data = data[prop]
data = data[prop] as Record<PropertyKey, unknown>
}

@@ -19,0 +19,0 @@ }

@@ -1,6 +0,5 @@

/* eslint-disable @typescript-eslint/no-explicit-any */
import setPropByList from './setPropByList'
/**
* 根据a.b字符串设置属性
* 根据a.b字符串设置属性 // 此函数认为targetData和prop必然存在,不做单独校验
* @param {*} targetData 对应对象

@@ -12,12 +11,8 @@ * @param {string} prop 属性字符串a.b,,父属性不存在时会创建对象

*/
function setProp(targetData: Record<PropertyKey, any>, prop: string, value: any, useSetData?: boolean) {
if (!targetData || !prop) {
return false
} else {
const propList = prop != '.' ? prop.split('.') : [prop]
setPropByList(targetData, propList, value, useSetData)
return true
}
function setProp(targetData: Record<PropertyKey, unknown>, prop: string, value: unknown, useSetData?: boolean) {
const propList = prop.indexOf('.') > -1 ? prop.split('.') : [prop]
setPropByList(targetData, propList, value, useSetData)
return true
}
export default setProp

@@ -1,2 +0,1 @@

/* eslint-disable @typescript-eslint/no-explicit-any */
import config from '../../config'

@@ -11,3 +10,3 @@

*/
function setPropByList(targetData: Record<PropertyKey, any>, propList: string[], value: any, useSetData?: boolean) {
function setPropByList(targetData: Record<PropertyKey, unknown>, propList: string[], value: unknown, useSetData?: boolean) {
let data = targetData

@@ -17,5 +16,5 @@ for (let n = 0; n < propList.length; n++) {

if (!data[propList[n]]) {
data[propList[n]] = {}
data[propList[n]] = {} as Record<PropertyKey, unknown>
}
data = data[propList[n]]
data = data[propList[n]] as Record<PropertyKey, unknown>
} else {

@@ -22,0 +21,0 @@ if (!useSetData) {