const _ = {
chunk: (array, size = 1) => {
let ret = []
let temp = []
let index = 0
for (i of array) {
if (temp.length == size) {
ret.push(temp)
temp = []
}
temp.push(i)
}
if (temp.length != 0) {
ret.push(temp)
}
return ret
},
compat: array => {
let ret = []
for (i of array) {
if (i) {
ret.push(i)
}
}
return ret
},
concat:(array,...values)=>{
for(i of values){
array=array.concat(i)
}
return array
},
diffrence:(array,...values)=>{
values=_.concat(values[0],...(values.slice(1)))
let ret=[]
for(i of array){
if(!values.includes(i)){
ret.push(i)
}
}
return ret
},
drop:(array,n=1)=>{
for(let i=0;i<n;i++){
array.shift()
}
return array
},
dropRight:(array,n=1)=>{
for(let i=0;i<n;i++){
array.pop()
}
return array
},
dropRightWhile:(array,perdicate=(x,...any)=>x)=>{
while(perdicate(array[array.length-1])){
array.pop()
}
return array
},
dropWhile:(array,perdicate=(x,...any)=>x)=>{
while(perdicate(array[0])){
array.shift()
}
return array
},
fill:(array, value, start=0, end=array.length)=>{
for(let i=start;i<end;i++){
array[i]=value
}
return array
},
findIndex:(array, predicate=((x,...any)=>x), fromIndex=0)=>{
for(let i=fromIndex;i<array.length;i++){
if(predicate(array[i])){
return i
}
}
return -1
},
findLastIndex:(array, predicate=((x,...any)=>x), fromIndex=array.length-1)=>{
for(let i=fromIndex;i>=0;i--){
if(predicate(array[i])){
return i
}
}
return -1
},
first:array=>array[0],
head:this.first,
flattern:array=>[].concat(...array),
flatternDeep:array=>{
while(array.some(x=>Array.isArray(x))){
array=[].concat(...array)
}
return array
},
flatternDepth:(array,depth=1)=>{
for(let i=0;i<depth;i++){
array=[].concat(...array)
}
return array
},
fromPairs:pairs=>{
let ret={}
for(i of pairs){
ret[i[0]]=i[1]
}
return ret
},
indexOf:(array, value, fromIndex=0)=>{
for(let i=(array.length+fromIndex)%array.length;i<array.length;i++){
if(array[i]===value||
(typeof array[i]==="number"&&typeof value==="number"&&
array[i]!=array[i]&&value!=value)){
return i
}
}
return -1
},
intersection:(...arrays)=>{
let ret=[]
let f=true
for(i of arrays[0]){
f=true
for(j of arrays.slice(1)){
if(!j.includes(i)){
f=false
break
}
}
if(f){
ret.push(i)
}
}
return ret
},
initial:array=>{
array.pop()
return array
}
}
console.log(_.initial([1,2,3,4,5,6,7,8,9]))