|
@@ -16,10 +16,140 @@ function unique(arr){
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 集合法
|
|
|
+ * 集合法去重
|
|
|
* @param {*} arr
|
|
|
* @returns
|
|
|
*/
|
|
|
function unique2(arr){
|
|
|
return [...new Set(arr)]
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 数组合并
|
|
|
+ * @param {*} arr
|
|
|
+ * @param {...any} args
|
|
|
+ * @returns
|
|
|
+ */
|
|
|
+function concat(arr,...args){
|
|
|
+ const result = [...arr]
|
|
|
+ args.forEach(item=>{
|
|
|
+ if(Array.isArray(item)){
|
|
|
+ result.push(...item)
|
|
|
+ }else{
|
|
|
+ result.push(item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return result
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 切片
|
|
|
+ * @param {*} arr
|
|
|
+ * @param {*} start
|
|
|
+ * @param {*} end
|
|
|
+ * @returns
|
|
|
+ */
|
|
|
+function slice(arr,start,end){
|
|
|
+ if(arr.length <= 0) return []
|
|
|
+ start = start || 0
|
|
|
+ if(start >= arr.length) return []
|
|
|
+ end = end || arr.length
|
|
|
+ if(start >= end) end = arr.length
|
|
|
+ const result = []
|
|
|
+ arr.forEach((item,index)=>{
|
|
|
+ if(index >= start && index < end){
|
|
|
+ result.push(item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return result
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 将多维数组变为一维数组 1
|
|
|
+ * @param {*} arr
|
|
|
+ * @returns
|
|
|
+ */
|
|
|
+function flatten1(arr){
|
|
|
+ let result = []
|
|
|
+ arr.forEach(item=>{
|
|
|
+ if(Array.isArray(item)){
|
|
|
+ result = result.concat(flatten1(item))
|
|
|
+ }else{
|
|
|
+ result = result.concat(item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return result
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 将多维数组变为一维数组 2
|
|
|
+ * @param {*} arr
|
|
|
+ * @returns
|
|
|
+ */
|
|
|
+function flatten2(arr){
|
|
|
+ let result = [...arr]
|
|
|
+ while(result.some(item=>Array.isArray(item))){
|
|
|
+ result = [].concat(...result) // concat 可以把元素放入数组 示例:[].concat(1,2,[3,4]) => [1,2,3,4]
|
|
|
+ }
|
|
|
+ return result
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 数组分组
|
|
|
+ * @param {*} arr
|
|
|
+ * @param {*} size
|
|
|
+ * @returns
|
|
|
+ */
|
|
|
+function chunk(arr,size = 1){
|
|
|
+ if(arr.lenght === 0) return []
|
|
|
+ let result = []
|
|
|
+ let tmp = []
|
|
|
+ arr.forEach(item=>{
|
|
|
+ if(tmp.length === 0){
|
|
|
+ result.push(tmp)
|
|
|
+ }
|
|
|
+ tmp.push(item)
|
|
|
+ if(tmp.length === size){
|
|
|
+ tmp = []
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return result
|
|
|
+}
|
|
|
+/**
|
|
|
+ * 差
|
|
|
+ * @param {*} arr
|
|
|
+ * @param {*} arr1
|
|
|
+ * @returns
|
|
|
+ */
|
|
|
+function diffrence(arr,arr1){
|
|
|
+ return arr.filter(item=>!arr1.includes(item))
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 删除数组元素,并返回删掉的元素
|
|
|
+ * @param {*} arr
|
|
|
+ * @param {...any} args
|
|
|
+ * @returns
|
|
|
+ */
|
|
|
+function pull(arr,...args){
|
|
|
+ const result = []
|
|
|
+ for(let i = 0;i<arr.length;i++){
|
|
|
+ if(args.includes(arr[i])){
|
|
|
+ result.push(arr[i])
|
|
|
+ arr.splice(i,1)
|
|
|
+ i--
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result
|
|
|
+}
|
|
|
+/**
|
|
|
+ * 不改变原数组 获取右侧元素
|
|
|
+ * @param {*} arr
|
|
|
+ * @param {*} size
|
|
|
+ * @returns
|
|
|
+ */
|
|
|
+function drop(arr,size){
|
|
|
+ return arr.filter((item,index)=>{
|
|
|
+ return index >= size
|
|
|
+ })
|
|
|
}
|