JS语法_集合
数组方法
forEach
// no-log
Array.prototype.forEach_ = function (cb) {
let len = this.length
for (let i = 0; i < len; i++) {
cb(this[i], i)
}
}
// log
let arr = ['', '', '']
arr.forEach_((item, index) => {
console.log('值:' + item + ' => ' + '索引:' + index)
})
为其加入中止功能
// no-log
Array.prototype.forEach_ = function (cb) {
let len = this.length
for (let i = 0; i < len; i++) {
let result = cb(this[i], i)
if (result === false) {
continue
}
}
}
// log
let arr = [1, 2, 120, 12, 3]
arr.forEach_((item, index) => {
if (item > 100) {
return false
}
console.log(item)
})
push
// no-log
Array.prototype.$push = function () {
for (let i = 0; i < arguments.length; i++) {
this[this.length] = arguments[i]
}
return this.length
}
// log
let arr = [1, 2]
console.log(arr.$push(3, 4))
console.log(arr)
join
join 的效率要比字符串拼接高
// log
let str1 = '1'
let str2 = '2'
let str3 = '3'
let str4 = '4'
let str5 = '5'
let str6 = '6'
let arr = [str1, str2, str3, str4, str5, str6]
let strFinal = ''
function f1() {
for (let i = 0; i < arr.length; i++) {
strFinal += arr[i]
}
}
function f2() {
strFinal += arr.join('')
}
// test +
{
let start = new Date().getTime()
for (let i = 0; i < 100000; i++) {
f1()
}
let end = new Date().getTime()
console.log('字符串拼接耗时: ' + (end - start))
}
// test join
{
let start = new Date().getTime()
for (let i = 0; i < 10000; i++) {
f2()
}
let end = new Date().getTime()
console.log('join耗时: ' + (end - start))
}
类数组
必须有length属性
// log
let obj = {
1: 'a',
2: 'b',
length: 2,
}
Array.prototype.push.call(obj, 'c')
console.log(obj)
// log
let obj = {
2: 'a',
3: 'b',
length: 2,
push: Array.prototype.push,
}
obj.push('c', 'd')
console.log(obj)
Set
// log
// 去重
function unique(arr) {
return [...new Set(arr)]
}
// 交集
function intersection(arr1, arr2) {
let uniqueArr1 = [...new Set(arr1)]
return uniqueArr1.filter((item) => new Set(arr2).has(item))
}
// 并集
function union(arr1, arr2) {
return [...new Set([...arr1, ...arr2])]
}
// 差集
function diff(arr1, arr2) {
// 交集取反即可
let uniqueArr1 = [...new Set(arr1)]
return uniqueArr1.filter((item) => !new Set(arr2).has(item))
}
let x = [1, 2, 1, 0, 1, 2, 3, 4, 5, 1, 3, 4, 5, 2, 3, 2, 1, 2, 3, 4]
let y = [0, 10, 20, 30, 30, 40, 50]
console.log(unique(x))
console.log(intersection(x, y))
console.log(union(x, y))
console.log(diff(x, y))
console.log(diff(y, x))
JS语法_集合的更多相关文章
- python语法_集合
集合:不同的元素(不可hash)组合在一起的就叫做集合,去掉重复的,以空字符返回,无序的 可以分为可变集合和不可变集合(frozenset) 创建: s = set('gm gyx') print(s ...
- Python基本语法_集合set/frozenset_内建方法详解
目录 目录 前言 软件环境 可变集合Set set函数创建集合 创建空集合 集合元素的唯一性 集合推导式 set类型对象的内置方法 add增加一个元素 remove删除一个元素 pop随机删除并返回一 ...
- JS语法_类型
类型 JS 的数据类型 boolean number string undefined null symbol object TS 额外的数据类型 void BigInt 是一种内置对象,它提供了一种 ...
- JS语法_其他
严格模式 let obj = { name: 'oceans', } function f1() { with (obj) { console.log(name) } } function f2() ...
- JS 语法大全
来源http://blog.csdn.net/newegg2009/article/details/6230582 js语法2008年03月19日 星期三 11:14一.js的数据类型和变量 Java ...
- 01.JS语法规范、变量与常量
前言: 学习一门编程语言的基本步骤 (01)了解背景知识 (02)搭建开发环境 (03)语法规范 (04)常量和变量 2.JS的开发环境 (1)浏览器自带的JS解释器(js引擎) (2 ...
- Js获取后台集合List的值和下标的方法
Js获取后台集合List的值和下标的方法 转载自:http://blog.csdn.net/XiaoKanZheShiJie/article/details/47280449 首先用的是struts2 ...
- JS语法(二)
JS变量 var 变量名 = 变量值://自己会判断什么类型 一个好的编程习惯是,在代码开始处,统一对需要的变量进行声明. var name = “xiaosan”, age = 22, addres ...
- Sublime text3 JS语法检测工具安装及使用
Sublime text3 JS语法检测工具安装及使用 工具/原料 sublime text3 nodejs sublimeLinter sublimeLinter-jshint 方法/步骤 首先ct ...
随机推荐
- 2020-08-08:有一批气象观测站,现需要获取这些站点的观测数据,并存储到 Hive 中。但是气象局只提供了 api 查询,每次只能查询单个观测点。那么如果能够方便快速地获取到所有的观测点的数据?
福哥答案2020-08-08: 参考答案:A.通过shell 或python 等调用api,结果先暂存本地,最后将本地文件上传到 Hive 中.B.通过 datax 的 httpReader 和 hd ...
- STM32中 BOOT0 BOOT1设置(问题:程序下载进去但无法运行)
默认BOOT0接10K接地,BOOT1接10K接地 实际如果BOOT0不接10K到地,会导致程序能下载进去,但是无法运行情况
- 如何使用screen命令
大家好,我是良许. 很多时候,我们都需要执行一些需要很长时间的任务.如果这时候,你的网络连接突然断开了,那么你之前所做的所有工作可能都会丢失,所做的工作可能都要重做一遍,这会浪费我们许多的时间,非常影 ...
- 记一次mysql数据库被勒索(中)
背景在上一篇文章里面已经提过了. 现在面临的问题是nextcloud没有mysql数据库,用不起来了. 因为文件没丢,一种方法是启动新的mysql数据库,把文件重新提交一次. 为了程序员的面子,没有选 ...
- 12. oracle 常用函数
一.字符函数字符函数是oracle中最常用的函数,我们来看看有哪些字符函数:lower(char):将字符串转化为小写的格式.upper(char):将字符串转化为大写的格式.length(char) ...
- springMVC入门(四)------参数绑定与返回值类型
简介 从之前的介绍,已经可以使用springMVC完成完整的请求.返回数据的功能. 待解决的问题:如何将数据传入springMVC的控制器进行后续的处理,完成在原生servlet/jsp开发中Http ...
- 【Go】单链表
node.go // 链表节点 type Node struct { data interface{} next *Node } // 构造一个节点 func NewNode(data interfa ...
- Answers for Q1 and Q2
A1: 1. enetity-data model mapping: 2. database design 2.1 sql create table A_manufacturer_info(manu ...
- Azure Logic App 入门(一)
一,引言 前两天看一个azure相关的题,接触到一个叫 “Azure Logic App” 的服务,刚好,今天抽空学习以下,顺便结合它做一篇入门的分析文章. 首先,我们得对它有个大概的认识,了解以下A ...
- android开发之使edittext输入弹出数字软键盘。亲测可用。手机号登陆注册常用。
<EditText android:id="@+id/edit_digit_input" android:layout_width="wrap_content&qu ...