parent
5cb13f5d7d
commit
1dfd6baf72
10
History.md
10
History.md
|
@ -1,3 +1,13 @@
|
||||||
|
2.1.0 / 2022-01-27
|
||||||
|
==================
|
||||||
|
* Array.prototype.item 更名为 Array.prototype.at
|
||||||
|
* String.prototype.item 更名为 String.prototype.at
|
||||||
|
* Array 增加findLast()和findLastIndex()原型方法
|
||||||
|
* Object 增加toParams()原型方法
|
||||||
|
* String 增加toJson()原型方法
|
||||||
|
* 重写Array的flat, flatMap原型方法, 性能提升5~10倍(视数据结构而定)
|
||||||
|
* 使用EsBuild打包代码
|
||||||
|
|
||||||
2.0.0 / 2020-09-18
|
2.0.0 / 2020-09-18
|
||||||
==================
|
==================
|
||||||
* 重构, 分cjs版和esm版。
|
* 重构, 分cjs版和esm版。
|
||||||
|
|
42
Readme.md
42
Readme.md
|
@ -6,39 +6,39 @@
|
||||||
|
|
||||||
```js
|
```js
|
||||||
├── Obejct
|
├── Obejct
|
||||||
│ └── empty(any) // 判断对象是否为空对象
|
│ └── .empty(any) // 判断对象是否为空对象
|
||||||
├── Obejct.prototype
|
├── Obejct.prototype
|
||||||
│ └── toParams() // 把对象转为 key1=value1&key2=value2 格式
|
│ └── .toParams() // 把对象转为 key1=value1&key2=value2 格式
|
||||||
│
|
│
|
||||||
├── Array.prototype
|
├── Array.prototype
|
||||||
│ ├── flat(depth) // 数组降维
|
│ ├── .flat(depth) // 数组降维
|
||||||
│ ├── flatMap(fn) // 等价于 map(fn) -> flat(1)
|
│ ├── .flatMap(fn) // 等价于 map(fn) -> flat(1)
|
||||||
│ ├── at(index) // 读取指定位置的元素, 负值则从后往前读
|
│ ├── .at(index) // 读取指定位置的元素, 负值则从后往前读
|
||||||
│ ├── findLast(fn) // 查找匹配的最后一项
|
│ ├── .findLast(fn) // 查找匹配的最后一项
|
||||||
│ └── findLastIndex(fn) // 查找匹配的最后一项的索引值
|
│ └── .findLastIndex(fn) // 查找匹配的最后一项的索引值
|
||||||
│
|
│
|
||||||
├── Date
|
├── Date
|
||||||
│ └── isDate(any) // 判断对象是否为 日期对象
|
│ └── .isDate(any) // 判断对象是否为 日期对象
|
||||||
├── Date.prototype
|
├── Date.prototype
|
||||||
│ ├── getWeek() // 获取当前是本月第几周
|
│ ├── .getWeek() // 获取当前是本月第几周
|
||||||
│ ├── getFullWeek() // 获取当前是本年度第几周
|
│ ├── .getFullWeek() // 获取当前是本年度第几周
|
||||||
│ └── format(formatStr) // 把日期按指定格式转换
|
│ └── .format(formatStr) // 把日期按指定格式转换
|
||||||
│
|
│
|
||||||
├── String.prototype
|
├── String.prototype
|
||||||
│ ├── splice(index, len, pad) // 类似数组的splice方法
|
│ ├── .splice(index, len, pad) // 类似数组的splice方法
|
||||||
│ ├── htmlspecialchars() // 字符串HTML安全转义
|
│ ├── .htmlspecialchars() // 字符串HTML安全转义
|
||||||
│ ├── tohtml() // htmlspecialchars的还原
|
│ ├── .tohtml() // htmlspecialchars的还原
|
||||||
│ ├── xss() // 字符串安全转义
|
│ ├── .xss() // 字符串安全转义
|
||||||
│ ├── escape() // js特殊字符的转义
|
│ ├── .escape() // js特殊字符的转义
|
||||||
│ ├── at() // 读取指定位置的字符, 负值则从后往前读
|
│ ├── .at(index) // 读取指定位置的字符, 负值则从后往前读
|
||||||
│ └── toJson() // 将url参数转为对象
|
│ └── .toJson() // 将url参数转为对象
|
||||||
│
|
│
|
||||||
├── Number
|
├── Number
|
||||||
│ ├── parse(str) // 将安全范围内的数字字符串转为数字类型
|
│ ├── .parse(str) // 将安全范围内的数字字符串转为数字类型
|
||||||
│ └── fromString(str) // 将字符串转为数字类型
|
│ └── .fromString(str) // 将字符串转为数字类型
|
||||||
│
|
│
|
||||||
└── Promise
|
└── Promise
|
||||||
└── defer() // 创建一个延迟的Promise对象
|
└── .defer() // 创建一个延迟的Promise对象
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @authors yutent (yutent@doui.cc)
|
* @author yutent<yutent.io@gmail.com>
|
||||||
* @date 2017-02-27 18:01:54
|
* @date 2022/01/27 15:33:09
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import './lib/object.js'
|
import './lib/object.js'
|
||||||
|
|
|
@ -18,7 +18,6 @@ Object.defineProperty(Array.prototype, 'flat', {
|
||||||
|
|
||||||
return arr
|
return arr
|
||||||
},
|
},
|
||||||
enumerable: false,
|
|
||||||
writable: true
|
writable: true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -26,7 +25,6 @@ Object.defineProperty(Array.prototype, 'flatMap', {
|
||||||
value: function(fn) {
|
value: function(fn) {
|
||||||
return this.map(fn).flat()
|
return this.map(fn).flat()
|
||||||
},
|
},
|
||||||
enumerable: false,
|
|
||||||
writable: true
|
writable: true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -39,7 +37,36 @@ if (!Array.prototype.at) {
|
||||||
}
|
}
|
||||||
return this[n]
|
return this[n]
|
||||||
},
|
},
|
||||||
enumerable: false,
|
writable: true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Array.prototype.findLast) {
|
||||||
|
Object.defineProperty(Array.prototype, 'findLast', {
|
||||||
|
value: function(fn) {
|
||||||
|
let num = this.length
|
||||||
|
while (num > 0) {
|
||||||
|
let item = this[--num]
|
||||||
|
if (fn(item, num)) {
|
||||||
|
return item
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
writable: true
|
||||||
|
})
|
||||||
|
|
||||||
|
// 没有findLast也不会有findLastIndex
|
||||||
|
Object.defineProperty(Array.prototype, 'findLastIndex', {
|
||||||
|
value: function(fn) {
|
||||||
|
let num = this.length
|
||||||
|
while (num > 0) {
|
||||||
|
let item = this[--num]
|
||||||
|
if (fn(item, num)) {
|
||||||
|
return num
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1
|
||||||
|
},
|
||||||
writable: true
|
writable: true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ if (!Date.isDate) {
|
||||||
value: function(obj) {
|
value: function(obj) {
|
||||||
return obj && typeof obj === 'object' && obj.getTime ? true : false
|
return obj && typeof obj === 'object' && obj.getTime ? true : false
|
||||||
},
|
},
|
||||||
enumerable: false
|
writable: true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,8 +22,7 @@ if (!Date.prototype.getFullWeek) {
|
||||||
let firstDay = that.getDay()
|
let firstDay = that.getDay()
|
||||||
let numsOfToday = (this - that) / 24 / 360 / 1000
|
let numsOfToday = (this - that) / 24 / 360 / 1000
|
||||||
return Math.ceil((numsOfToday + firstDay) / 7)
|
return Math.ceil((numsOfToday + firstDay) / 7)
|
||||||
},
|
}
|
||||||
enumerable: false
|
|
||||||
})
|
})
|
||||||
|
|
||||||
//获取当天是本月第几周
|
//获取当天是本月第几周
|
||||||
|
@ -34,8 +33,7 @@ if (!Date.prototype.getFullWeek) {
|
||||||
let thisYear = this.getFullYear()
|
let thisYear = this.getFullYear()
|
||||||
let firstDay = new Date(thisYear, thisMonth, 1).getDay()
|
let firstDay = new Date(thisYear, thisMonth, 1).getDay()
|
||||||
return Math.ceil((today + firstDay) / 7)
|
return Math.ceil((today + firstDay) / 7)
|
||||||
},
|
}
|
||||||
enumerable: false
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +80,6 @@ if (!Date.prototype.format) {
|
||||||
str = str.replace(new RegExp(i, 'g'), reg[i])
|
str = str.replace(new RegExp(i, 'g'), reg[i])
|
||||||
}
|
}
|
||||||
return str
|
return str
|
||||||
},
|
}
|
||||||
enumerable: false
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,10 +19,7 @@ if (!Number.parse) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (isFinite(val)) {
|
if (isFinite(val)) {
|
||||||
if (
|
if (val >= Number.MIN_SAFE_INTEGER && val <= Number.MAX_SAFE_INTEGER) {
|
||||||
val >= Number.MIN_SAFE_INTEGER &&
|
|
||||||
val <= Number.MAX_SAFE_INTEGER
|
|
||||||
) {
|
|
||||||
val = +val
|
val = +val
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,8 +27,7 @@ if (!Number.parse) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return val
|
return val
|
||||||
},
|
}
|
||||||
enumerable: false
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +36,6 @@ if (!Number.fromString) {
|
||||||
Object.defineProperty(Number, 'fromString', {
|
Object.defineProperty(Number, 'fromString', {
|
||||||
value: function(val) {
|
value: function(val) {
|
||||||
return +val || 0
|
return +val || 0
|
||||||
},
|
}
|
||||||
enumerable: false
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,8 +17,7 @@ if (!Object.empty) {
|
||||||
}
|
}
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
return true
|
return true
|
||||||
},
|
}
|
||||||
enumerable: false
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +33,6 @@ if (!Object.prototype.toParams) {
|
||||||
params += `&${k}=${this[k]}`
|
params += `&${k}=${this[k]}`
|
||||||
}
|
}
|
||||||
return params.slice(1)
|
return params.slice(1)
|
||||||
},
|
}
|
||||||
enumerable: false
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,8 +35,7 @@ if (!String.prototype.splice) {
|
||||||
|
|
||||||
return strl + fill + strr
|
return strl + fill + strr
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
enumerable: false
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,8 +54,7 @@ if (!String.prototype.htmlspecialchars) {
|
||||||
} else {
|
} else {
|
||||||
return str.replace(/"/g, '"')
|
return str.replace(/"/g, '"')
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
enumerable: false
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,8 +67,7 @@ if (!String.prototype.tohtml) {
|
||||||
.replace(/"/gi, '"')
|
.replace(/"/gi, '"')
|
||||||
.replace(/'/g, "'")
|
.replace(/'/g, "'")
|
||||||
.replace(/&/gi, '&')
|
.replace(/&/gi, '&')
|
||||||
},
|
}
|
||||||
enumerable: false
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,8 +83,7 @@ if (!String.prototype.xss) {
|
||||||
)
|
)
|
||||||
.replace(/(%0[0-8bcef])|(%1[0-9a-f])/g, '')
|
.replace(/(%0[0-8bcef])|(%1[0-9a-f])/g, '')
|
||||||
return str
|
return str
|
||||||
},
|
}
|
||||||
enumerable: false
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,8 +92,7 @@ if (!String.prototype.escape) {
|
||||||
Object.defineProperty(String.prototype, 'escape', {
|
Object.defineProperty(String.prototype, 'escape', {
|
||||||
value: function() {
|
value: function() {
|
||||||
return this.replace(/('|"|&|\\|\}|\{|\(|\)|;|=|\,|&)/g, '\\$1')
|
return this.replace(/('|"|&|\\|\}|\{|\(|\)|;|=|\,|&)/g, '\\$1')
|
||||||
},
|
}
|
||||||
enumerable: false
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,7 +105,6 @@ if (!String.prototype.at) {
|
||||||
}
|
}
|
||||||
return this[n]
|
return this[n]
|
||||||
},
|
},
|
||||||
enumerable: false,
|
|
||||||
writable: true
|
writable: true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -132,7 +126,6 @@ if (!String.prototype.toJson) {
|
||||||
obj[it[0]] = it[1] || ''
|
obj[it[0]] = it[1] || ''
|
||||||
}
|
}
|
||||||
return obj
|
return obj
|
||||||
},
|
}
|
||||||
enumerable: false
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue