/**
* like map,but prev,curr,next and index will be given
* @param {Function} cb Callback,the parameters ara prev,curr,next and index
* @return {[type]} [description]
*/
Array.prototype.bigmap=function(cb){
var copy = this.slice(0);
var len = this.length;
for (var i = 0; i < len; i++) {
var curr = this[i];
var prev = i==0?undefined:this[i-1];
var next = i==len?undefined:this[i+1];
var ret = cb(curr,prev,next,i);
if(ret){
copy[i]=ret;
}
}
return copy;
} //写个栗子
// [1,2,3,4,7,9,10,50] => ["1-4", "7", "9-10", "50"] var arr = [1,2,3,4,7,9,10,50];
arr = arr.bigmap(function(curr,prev,next,i){
// console.log(curr+"--"+prev+"--"+next+"--"+i)
if(prev+1==curr){
var ret = "_";
if(next-1!=curr){
ret += curr;
}
return ret;
}
}).filter(function(obj){
return obj!="_";
}).toString().replace(/,_/g,"-").split(","); console.log(arr)

Js自定义数组map之bigmap的更多相关文章

  1. JS基础——数组API之数组操作(filter、map、some、every、sort)

    var arr = [1,2,3,4];   forEach arr.forEach((item,index,arr) => { console.log(item) //结果为1,2,3,4 } ...

  2. 应该用forEach改变数组的值吗? 原生JS forEach()和map()遍历的异同点

    应该用forEach改变数组的值吗? https://segmentfault.com/q/1010000013170900?utm_source=index-hottest 由于js中的数组是引用类 ...

  3. js源码-自定义数组的pop和shift方法

    本文将自定义_pop和_shift来模拟数组的pop和shift方法 _pop: /* *js中数组的pop方法:删除数组的最后一个元素,把数组的长度减1,并且返回删除的这个元素:如果数组为空,则po ...

  4. Js遍历数组总结

    Js遍历数组总结 遍历数组的主要方法为for.forEach.map.for in.for of for var arr = [1,2,3,4,5]; var n = arr.length; // 直 ...

  5. js自定义弹出框

    js自定义弹出框: 代码如下 <html> <head><title>自定义弹出对话框</title> <style type ="te ...

  6. js之数组,对象,类数组对象

    许久不写了,实在是不知道写点什么,正好最近有个同事问了个问题,关于数组,对象和类数组的,仔细说起来都是基础,其实都没什么好讲的,不过看到还是有很多朋友有些迷糊,这里就简单对于定义以及一下相同点,不同点 ...

  7. js Array数组的使用

    js Array数组的使用   Array是javascript中的一个事先定义好的对象(也可以称作一个类),可以直接使用 创建Array对象 var array=new Array(): 创建指定元 ...

  8. js自定义事件、DOM/伪DOM自定义事件

    一.说明.引言 我JS还是比较薄弱的,本文的内容属于边学边想边折腾的碎碎念,可能没什么条理,可能有表述不准确的地方,可能内容比较拗口生僻.如果您时间紧迫,或者JS造诣已深,至此您就可以点击右侧广告(木 ...

  9. js,jQuery数组常用操作小结

    一.js中数组常用操作小结 (1) shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift() ...

随机推荐

  1. centos中安装python3.7

    1.1 CentOS 7编译安装Python3.7.X 1.安装依赖&下载python3.7 # 1.yum更新yum源 yum update # 2.安装Python 3.7所需的依赖否则安 ...

  2. PostgreSQL-事务与commit优化

    基本概念 事务 Transaction 是 数据库管理系统DBMS 执行过程中的一个逻辑单元,是一个 sql命令组成的序列. 其特点在于,当事务被提交DBMS后,DBMS需要确保所有的操作被完成:如果 ...

  3. 列表(索引切片 增删改查 嵌套) range 元组的初识

    li = ["alex", "WuSir", "ritian", "barry", "wenzhou" ...

  4. java 字符串锁

    package com.example.demo.controller; public class StringLock { public void method(String p) { // new ...

  5. go依赖包管理工具vendor基础

    go依赖包管理工具vendor基础 vendor是go的依赖包管理工具,主要用于管理项目中使用到的一些依赖. 它将项目依赖的包,特指外部包,复制到当前工程下的vendor目录下,这样go build的 ...

  6. vue组件之间通信的8种方式

    对于vue来说,组件之间的消息传递是非常重要的,下面是我对组件之间消息传递的常用方式的总结. props和$emit(常用) $attrs和$listeners 中央事件总线(非父子组件间通信) v- ...

  7. Host xxx is not allowed to connect to this MariaDb server

    直接复制代码,无需修改 第一:// %:表示从任何主机连接到mysql服务器 GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'pass ...

  8. vue.js 分页加载,向上滑动,依次加载数据。

    export default { layout: 'default', data(){ return{ page:1, pageSize:10, orderListArr:[], prodListLo ...

  9. AIX系统的备份和恢复

    1.AIX备份命令

  10. python代码优化-----cpu和内存监控

    1.memory_profiler可以监控代码的内存消耗及增长量,以下面的代码为例. 发现在for循环里增加了0.3MB,这个工具可以帮助我们定位内存泄露的问题. 2.profile与cProfile ...