'use strict'
let _ = { // 将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。
chunk(arr, nub) {
var res = [];
for (var i = 0; i < arr.length; i += nub) {
res.push(arr.slice(i, i + nub))
};
return res;
}, // 创建一个新数组,包含原数组中所有的非假值元素。例如false, null, 0, "", undefined, 和 NaN 都是被认为是“假值”。
compact (arr) {
let res = [];
arr.forEach( item => {
typeof item === 'number' && res.push(item)
} );
return res
}, // 创建一个新数组,将array与任何数组 或 值连接在一起。
concat(...arr) {
let res = [];
arr.forEach( item => {
item instanceof Array ? item.forEach(i => res.push(i)) : res.push(item)
} );
return res
}, // 创建一个具有唯一array值的数组,每个值不包含在其他给定的数组中。(愚人码头注:即创建一个新数组,这个数组中的值,为第一个数字(array 参数)排除了给定数组中的值。)该方法使用 SameValueZero做相等比较。结果值的顺序是由第一个数组中的顺序确定。
// 注意: 不像 _.pullAll,这个方法会返回一个新数组。
difference(arr, filtersArr) {
arr.forEach( (item, index) => {
if(filtersArr.includes(item)) {
arr.splice(index, 1)
}
} );
return arr
}, // 这个方法类似_.difference ,除了它接受一个 iteratee (愚人码头注:迭代器), 调用array 和 values 中的每个元素以产生比较的标准。 结果值是从第一数组中选择。iteratee 会调用一个参数:(value)。(愚人码头注:首先使用迭代器分别迭代array 和 values中的每个元素,返回的值作为比较值)。
// 注意: 不像 _.pullAllBy,这个方法会返回一个新数组。
}; console.log( _.chunk([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], 3) );
console.log( _.compact([0, 1, false, 2, '', 3, null, '1']) );
console.log( _.concat([1], 2, 3, 4, [5], [[6]]) );
console.log( _.difference([1, 2, 3], [2, 4]) );

Lodash 方法库 原生实现 待完结。。。的更多相关文章

  1. nodejs常用npm包

    express常用npm包整理如下 art-template 一款js模板引擎,性能不错 jayson     一款纯node的rpc应用包,可实现rpc服务.tcp.http等服务 multer   ...

  2. js原生设计模式——8单例模式之简约版属性样式方法库

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  3. js原生捕鱼达人(三)--完结

    先给分享下我写完的效果,github有点卡,我没有压缩代码,不过效果可以看到 https://jasonwang911.github.io/ 转载请注明'转载于Jason齐齐的博客http://www ...

  4. Selenium2学习-042-Selenium3启动Firefox Version 48.x浏览器(ff 原生 geckodriver 诞生)

    今天又被坑了一把,不知谁把 Slave 机的火狐浏览器版本升级为了 48 的版本,导致网页自动化测试脚本无法启动火狐的浏览器,相关的网页自动化脚本全线飘红(可惜不是股票,哈哈哈...),报版本不兼容的 ...

  5. 直接拿来用!最火的Android开源项目(完结篇)

    直接拿来用!最火的Android开源项目(完结篇) 2014-01-06 19:59 4785人阅读 评论(1) 收藏 举报 分类: android 高手进阶教程(100) 摘要:截至目前,在GitH ...

  6. lodash源码(2)

    1.flatten 对深层嵌套数组的抹平 _.flatten([1, [2, 3, [4]]]);* // => [1, 2, 3, [4]]** // using `isDeep`* _.fl ...

  7. lodash的源码(1)

    数组篇 1.compact,就是将数组中的false值去掉 function compact(array) { var index = -1, length = array ? array.lengt ...

  8. iOS流量精灵完结版

    从一开始的激动,到现在的三期完结持续了将近三个半月时间,心态也开始变的坦然. 开发期间没有兑现自己的若言,没有写下所有的感悟和困难.我没有借口可言,唯一能说的只能说自己太懒....哈哈 总体来说流量监 ...

  9. android 学习随笔二十七(JNI:Java Native Interface,JAVA原生接口 )

    JNI(Java Native Interface,JAVA原生接口) 使用JNI可以使Java代码和其他语言写的代码(如C/C++代码)进行交互. 问:为什么要进行交互? 首先,Java语言提供的类 ...

随机推荐

  1. 某考试 T1 至危警告

    题目大意就是: 设f(x)为x各个位数字之和,求x属于[0,k]且b * f(x)^a + c = x的x个数并升序输出. (a<=5  .  b,c,<=10^4  .   k<= ...

  2. SVN 更新后Tomcat 启动时出现问题

    更新了svn后,启动本地的tomcat容器发现启动不了, 检查后发现是配置文件配置出现问题,因为我们的该项目 配置有tomcat与weblogic两种 , 而在我的web.xml中 默认配置的serv ...

  3. Excel小tips - 如何实现多列成绩统一排名

    本文参考:http://mp.weixin.qq.com/s/XR49hyG9Cods7rOcsM-tRg 如果有以下数据文件,需要进行成绩排名. 第一步:先在成绩列后边添加一列,用来显示名次.如下: ...

  4. struts2 自己定义表单

    自己定义表单一定会涉及<s:iterator/>迭代,一个复杂的自己定义表单可能会嵌套n多层迭代. 比方一个自己定义一个问卷调查页面涉及3个模型:一个Survey代表一个调查.一个Page ...

  5. 去哪网实习总结:easyui在JavaWeb中的使用,以datagrid为例(JavaWeb)

    本来是以做数据挖掘的目的进去哪网的,结构却成了系统开发. . . 只是还是比較认真的做了三个月.老师非常认同我的工作态度和成果.. . 实习立即就要结束了,总结一下几点之前没有注意过的变成习惯和问题, ...

  6. wikioi 2147 bitset+map解决

    题目描写叙述 Description 小明是一名天文爱好者,他喜欢晚上看星星.这天,他从淘宝上买下来了一个高级望远镜.他十分开心.于是他晚上去操场上看星星. 不同的星星发出不同的光,他的望远镜能够计算 ...

  7. 【APUE】vim常用命令

    转自:http://coolshell.cn/articles/5426.html 基本命令: i → Insert 模式,按 ESC 回到 Normal 模式. x → 删当前光标所在的一个字符. ...

  8. ldd

    ldd命令用于判断某个可执行的 binary 档案含有什么动态函式库 [diego@localhost ~/work/branch_dispatch_201511/rtqa_center/source ...

  9. 聚合类新闻client产品功能点详情分析

    产品功能点 功能 今日头条 百度新闻 鲜果 ZAKER 媒体订阅 × √ ★ ★ 个性化内容推荐 ★ √ × × 个性化订阅(RSS) × × ★ × 视频新闻 × × × × 评论盖楼 √ √ √ ...

  10. Robot Framework操作

    Robot Framework 介绍 RobotFramework是一款基于python的开源自动化测试框架,遵守Apache License 2.0协议,在此协议下所有人都可以免费开发和使用.因为R ...