数组增加一批新原型方法
parent
0ebe311615
commit
9fe20a39e2
|
@ -15,7 +15,13 @@
|
|||
│ ├── .flatMap(fn) // 等价于 map(fn) -> flat(1)
|
||||
│ ├── .at(index) // 读取指定位置的元素, 负值则从后往前读
|
||||
│ ├── .findLast(fn) // 查找匹配的最后一项
|
||||
│ └── .findLastIndex(fn) // 查找匹配的最后一项的索引值
|
||||
│ ├── .findLastIndex(fn) // 查找匹配的最后一项的索引值
|
||||
│ ├── .toSorted(fn) // 数组排序, 返回一个副本(不改变原数组)
|
||||
│ ├── .toReversed(fn) // 反转数组, 同样返回一个副本
|
||||
│ ├── .toSpliced(fn) // 数组截取, 同样返回副本
|
||||
│ ├── .with(index, newValue) // 创建一个副本,再修改副本中的元素, 返回副本
|
||||
│ ├── .group(fn) // 数组分组
|
||||
│ └── .groupToMap(fn) // 数组分组, 返回Map对象
|
||||
│
|
||||
├── Date
|
||||
│ └── .isDate(any) // 判断对象是否为 日期对象
|
||||
|
|
|
@ -31,7 +31,7 @@ Object.defineProperty(Array.prototype, 'flatMap', {
|
|||
if (!Array.prototype.at) {
|
||||
Object.defineProperty(Array.prototype, 'at', {
|
||||
value: function (num) {
|
||||
var n = +num
|
||||
let n = +num
|
||||
if (n < 0) {
|
||||
n += this.length
|
||||
}
|
||||
|
@ -70,3 +70,83 @@ if (!Array.prototype.findLast) {
|
|||
writable: true
|
||||
})
|
||||
}
|
||||
|
||||
// 最新增加的几种方法
|
||||
if (!Array.prototype.toSorted) {
|
||||
Object.defineProperty(Array.prototype, 'toSorted', {
|
||||
value: function (fn) {
|
||||
return [...this].sort(fn)
|
||||
},
|
||||
writable: true
|
||||
})
|
||||
|
||||
Object.defineProperty(Array.prototype, 'toReversed', {
|
||||
value: function () {
|
||||
return [...this].reverse()
|
||||
},
|
||||
writable: true
|
||||
})
|
||||
|
||||
Object.defineProperty(Array.prototype, 'toSpliced', {
|
||||
value: function (...args) {
|
||||
return [...this].splice(...args)
|
||||
},
|
||||
writable: true
|
||||
})
|
||||
|
||||
Object.defineProperty(Array.prototype, 'with', {
|
||||
value: function (num, val) {
|
||||
let n = +num
|
||||
let arr = [...this]
|
||||
if (n < 0) {
|
||||
n += arr.length
|
||||
}
|
||||
arr[n] = val
|
||||
return arr
|
||||
},
|
||||
writable: true
|
||||
})
|
||||
}
|
||||
|
||||
// 数组分组
|
||||
if (!Array.prototype.group) {
|
||||
Object.defineProperty(Array.prototype, 'group', {
|
||||
value: function (fn) {
|
||||
let output = {}
|
||||
if (typeof fn === 'function') {
|
||||
for (let it of this) {
|
||||
let key = fn(it)
|
||||
if (output[key]) {
|
||||
output[key].push(it)
|
||||
} else {
|
||||
output[key] = [it]
|
||||
}
|
||||
}
|
||||
return output
|
||||
} else {
|
||||
throw Error('argument callback must be a function.')
|
||||
}
|
||||
},
|
||||
writable: true
|
||||
})
|
||||
|
||||
Object.defineProperty(Array.prototype, 'groupToMap', {
|
||||
value: function (fn) {
|
||||
let output = new Map()
|
||||
if (typeof fn === 'function') {
|
||||
for (let it of this) {
|
||||
let key = fn(it)
|
||||
if (output.has(key)) {
|
||||
output.get(key).push(it)
|
||||
} else {
|
||||
output.set(key, [it])
|
||||
}
|
||||
}
|
||||
return output
|
||||
} else {
|
||||
throw Error('argument callback must be a function.')
|
||||
}
|
||||
},
|
||||
writable: true
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue