前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【30秒一个知识点】Array(一)

【30秒一个知识点】Array(一)

作者头像
ConardLi
发布2019-05-23 22:32:55
4310
发布2019-05-23 22:32:55
举报

本系列翻译自开源项目 30-seconds-of-code 这是一个非常优秀的系列,不是说真的三十秒就能理解,也需要你认真的思考,其中有一些点非常精妙,很值得一读。 本文在我的github同步更新,点击文章末尾阅读全文你可以看到当前翻译的全部系列。 如果您对本期有不同或者更好的见解,请后台留言,喜欢请点个好看,谢谢阅读。

all

如果被提供的断言函数接收数组中每个元素作为参数都返回 true,则返回 true,否则返回 false

使用 Array.prototype.every()来测试是否第二个参数 fn以集合中每个元素作为参数都返回 true,使用 Boolean作为默认值。

const all = (arr, fn = Boolean) => arr.every(fn);

示例

all([4, 2, 3], x => x > 1); // trueall([1, 2, 3]); // true

allEqual

检查是否数组中所有的元素都是相等的。

使用 Array.prototype.every() 来检测是否数组中的所有元素都和第一个元素相等。

const allEqual = arr => arr.every(val => val === arr[0]);

示例

allEqual([1, 2, 3, 4, 5, 6]); // falseallEqual([1, 1, 1, 1]); // true

any

如果被提供的断言函数接收数组中任意一个元素作为参数都返回 true,则返回 true,否则返回 false

使用 Array.prototype.every()来测试是否第二个参数 fn以集合中任意一个元素作为参数都返回 true,使用 Boolean作为默认值。

const any = (arr, fn = Boolean) => arr.some(fn);

示例

any([0, 1, 2, 0], x => x >= 2); // trueany([0, 0, 1, 0]); // true

arrayToCSV

将2D数组转换为逗号分隔值(CSV)字符串。

使用 Array.prototype.map()Array.prototype.join(delimiter) 将一个一维数组转换为字符串。

使用 Array.prototype.join('\n') 将所有行合并成CSV字符串, 用换行符分割每一行。

如果没有第二哥参数, delimiter会使用一个默认分隔符 ,.

const arrayToCSV = (arr, delimiter = ',') =>  arr.map(v => v.map(x => `"${x}"`).join(delimiter)).join('\n');

示例

arrayToCSV([['a', 'b'], ['c', 'd']]); // '"a","b"\n"c","d"'arrayToCSV([['a', 'b'], ['c', 'd']], ';'); // '"a";"b"\n"c";"d"'

bifurcate

将数据分为两组,如果元素在 filter数组中对应的是 true,集合中相应的元素应加入第一个数组,否则加入第二个数组。

基于 filter使用 Array.prototype.reduce()Array.prototype.push()将元素分组。

const bifurcate = (arr, filter) =>  arr.reduce((acc, val, i) => (acc[filter[i] ? 0 : 1].push(val), acc), [[], []]);

示例

bifurcate(['beep', 'boop', 'foo', 'bar'], [true, true, false, true]); // [ ['beep', 'boop', 'bar'], ['foo'] ]

bifurcateBy

根据断言函数将数据分成两组,断言函数将指定集合中的元素属于哪个组。如果断言函数返回 true,元素加入第一个数组,否则加入第二个数组。

给予 fn接收元素的返回值,使用 Array.prototype.reduce()Array.prototype.push()将元素分组。

const bifurcateBy = (arr, fn) =>  arr.reduce((acc, val, i) => (acc[fn(val, i) ? 0 : 1].push(val), acc), [[], []]);

示例

bifurcateBy(['beep', 'boop', 'foo', 'bar'], x => x[0] === 'b'); // [ ['beep', 'boop', 'bar'], ['foo'] ]
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 code秘密花园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • all
  • allEqual
  • any
  • arrayToCSV
  • bifurcate
  • bifurcateBy
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档