Js自定义数组map之bigmap

Posted PheonixHkbxoic

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Js自定义数组map之bigmap相关的知识,希望对你有一定的参考价值。

 1         /**
 2          * like map,but prev,curr,next and index will be given
 3          * @param  {Function} cb Callback,the parameters ara prev,curr,next and index
 4          * @return {[type]}      [description]
 5          */
 6         Array.prototype.bigmap=function(cb){
 7             var copy = this.slice(0);
 8             var len = this.length;
 9             for (var i = 0; i < len; i++) {
10                 var curr = this[i];
11                 var prev = i==0?undefined:this[i-1];
12                 var next = i==len?undefined:this[i+1];
13                 var ret = cb(curr,prev,next,i);
14                 if(ret){
15                     copy[i]=ret;
16                 }
17             }
18             return copy;
19         }
20 
21         //写个栗子
22         // [1,2,3,4,7,9,10,50]  =>  ["1-4", "7", "9-10", "50"]
23 
24         var arr = [1,2,3,4,7,9,10,50];
25         arr = arr.bigmap(function(curr,prev,next,i){
26             // console.log(curr+"--"+prev+"--"+next+"--"+i)
27             if(prev+1==curr){
28                 var ret = "_";
29                 if(next-1!=curr){
30                     ret += curr;
31                 }
32                 return ret;
33             }
34         }).filter(function(obj){
35             return obj!="_";
36         }).toString().replace(/,_/g,"-").split(",");
37 
38         console.log(arr)

 

以上是关于Js自定义数组map之bigmap的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段10—— 数组的响应式方法

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

javascript-自定义Map

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段12——JavaScript的Promise对象