对象数组

for...of循环

亡梦爱人 提交于 2020-04-06 06:45:53
for of 循环语句 for...of 循环语句 ES6 为实现了迭代器接口的数据提供了统一访问访机制:新增了一个循环语句 — for...of 循环语句;该语句会自动寻找 Iterator 接口。所以数据只要实现了 Iterator 接口,该数据就是可以被遍历的;该接口默认部署在 Symbol.iterator 属性上 原生的数据实现了迭代器接口的有: Array , String , Map , Set , TypedArray (如 Int8Array ), arguments , NodeList , HTMLCollection 等 // 字符串迭代器接口 console.log(String.prototype[Symbol.iterator]) //类数组 迭代器 let arr = new Int8Array(4) arr[0] = 10 arr[1] = 100 // arr[2] = 1000 arr[2] = 2 ** 7 - 1 console.log(arr) //参数 function demo() { console.log(arguments) } demo() console.log(document.getElementsByTagName('div')); console.log(document.querySelectorAll('div'

Set对象

戏子无情 提交于 2020-04-06 06:00:27
Set对象 在javaScript中存在两类聚合数据: 数组和对象。 ES6又新增两类聚合数据:Set对象和Map对象 Set对象,类似数组,但却是去重后的有序聚合数据。成员值都是唯一的(数据类型不同) // let s1 = new Set([1, 2, 3, 2, 1, '2', NaN, +'a', 0, 0/-1]); // console.log(s1) // // 转化数组 // console.log([...s1]) // console.log(Array.from(s1)); Set是构造函数,参数是数组,类数组(或者实现了迭代器接口的数据) 我们可以用...语法对set对象转成数组。 set 相关方法简表: 方法 | 说明 :-:|-- Set.prototype.constructor | 构造函数,默认就是 Set 函数。 Set.prototype.size | 返回 Set 实例的成员总数。 add (value) | 添加某个值,返回 Set 结构本身。 delete(value ) | 删除某个值,返回一个布尔值,表示删除是否成功。 has (value) | 返回一个布尔值,表示参数是否为 Set 的成员。 clear() | 清除所有成员,没有返回值。 keys () | 返回键名的遍历器。 values () | 返回键值的遍历器。

【第三方类库】Underscore.js Version (1.2.3) 中文文档

拥有回忆 提交于 2020-04-05 23:03:48
Underscore.js Version (1.2.3) 中文文档 Underscore 一个非常实用的JavaScript库,提供许多编程功能的支持,就像你期望 Prototype.js (或者 Ruby ), 有这些功能且不扩展任何JavaScript的原生对象。 It's the tie to go along with jQuery 's tux. Underscore提供60多个方法,即有普通的功能,例如: map , select , invoke — 也有更多特殊的编程辅助方法,例如:函数绑定、javascript模板、绝对相等判断等待。 如果一些现代的浏览器提供了内置的 forEach , map , reduce , filter , every , some 和 indexOf 方法,Underscore就委托给浏览器原生的方法。 Underscore提供完整的 测试用例集 供你精读。 你也可以阅读有注释的 源代码 。 项目代码放在 GitHub 上,你可以通过 issues页 、Freenode的 #documentcloud 频道、发送tweets给 @documentcloud 三个途径报告bug以及参与特性讨论。 Underscore是 DocumentCloud 的一个开源组件。 下载 (Right-click, and use "Save As")

从Java对象布局markword看syncronized的本质

自作多情 提交于 2020-04-05 15:55:15
可以通过以下工具来查看Java对象的布局:JOL=Java Object Layout。 <!-- https://mvnrepository.com/artifact/org.openjdk.jol/jol-core --> <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.10</version> </dependency> 先看下在JVM中,一个引用的长度占用多少字节: import org.openjdk.jol.vm.VM; public class JavaObjectLayout { public static void main(String[] args) { System.out.println("------------VM details---------------"); System.out.println(VM.current().details()); } } 这个details()方法由JOL类库中的HotspotUnsafe类实现: 运行结果: 运行结果中可以看到: 1.JVM是64位的HotSpot 2.默认开启oop(Ordinary Object Pointer,普通对象指针)压缩,可设置JVM参数-XX:

js 实现对象的混合与克隆效果,带完整版解析代码

女生的网名这么多〃 提交于 2020-04-04 09:34:22
前言: 本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽。 本篇文章为您分析一下原生JS写对象混合与克隆 对象混合 页面中如下需求 var obj1 = { x: 1, y: "a" } var obj2 = { x: "b", o: 6 } 页面上有两个对象 我们要把这两个对象混合成一个 形成如下结构: // 将obj2混合到obj1中 obj = { x: "b", y: "a", o: 6 } 参考代码: // ES5之前的版本 function mixin(obj1, obj2){ // 第一步: 创建一个对象 var newObj = {}; // 第二步: 循环obj2中的对象 for(var prop in obj2){ // 第三步: 将obj2中的属性添加到新创建爱对象中 newObj[prop] = obj2[prop]; } // 第四步: 循环obj1中的对象 for(var prop in obj1){ // 第五步: 看看obj1中的属性在不在obj2中,如果不在就将他加入的新的对象中 if(!(prop in obj2)){ newObj[prop] = obj1[prop]; } } // 最后返回这个新的对象 return newObj; } // ES6版本 // function mixin

数组转为对象

佐手、 提交于 2020-04-04 06:34:55
1.js里将两个数组转为对象,第一个数组为key,第二个为value。如[1,2,5]和[18,8,6]转换成对象{1:18,2:8,5:6}。 2.js里将多个数组转为对象,每个数组只有两个值,转成的对象以每个数组里的首位为key,第二位为value。如[a,1]和[b,2]、[c,3]转换成对象{a:1,b:2,c:3}。 只要使用underscore.js框架中的_.object方法就可以办到,不需要写复杂的for语句来遍历,具体实现如下: _.object(['moe', 'larry', 'curly'], [30, 40, 50]); => {moe: 30, larry: 40, curly: 50} _.object([['moe', 30], ['larry', 40], ['curly', 50]]); => {moe: 30, larry: 40, curly: 50} 以下是_.object()方法在underscore里的源码,如果项目没有引用underscore库,也可以像下面那样自己写for循环: _.object(list,values){ var result={}; for(var i=0;i<list.length;i++){ if(values){ result[list[i]]=values[i]; }else{ result[list[i

[No000018A]改善C#程序的建议11-20

别说谁变了你拦得住时间么 提交于 2020-04-03 18:32:04
建议11:区别对待 == 和Equals CLR中将“相等性”分为两类: 1、值相等性:两个变量包含的数值相等。 2、引用相等性:两个变量引用的是内存中的同一个对象。 但并不是所有的类型的比较都是按照其本身,比如string是一个特殊的引用类型,但是在FCL中,string的比较就被重载为针对“类型的值”的比较,而不是“引用本身”的比较。对于自定义类型来说,如果想要实现这样的值比较而不是引用比较的话,则需要重载Equals方法,比如对于Person类,如果IDCode相同,我们可以认为他们是同一个人。 class Person { public string IDCode { get; private set; } public Person(string idCode) { this.IDCode = idCode; } public override bool Equals(object obj) { return IDCode == (obj as Person).IDCode; } } 此时通过Equals去比较的话,则就会通过重载后的方法来进行了。 object a = new Person("ABC"); object b = new Person("ABC"); Console.WriteLine(a == b); //False Console.WriteLine

OC-字符串、数组、字典总结

回眸只為那壹抹淺笑 提交于 2020-04-03 10:22:46
#import <Foundation/Foundation.h> /* ∆以NSMutable开头的都是可变类型,以NSMutable开头定义的对象都是可以对数据进行修改; NSString //不可变字符串 NSMutableString//可变字符串 NSArray// 不可变数组 NSMutableArray//可变数组 NSDictionary//不可变字典 NSMutableDictionary//可变字典 可变的意思是可以对这个类型定义的变量进行修改或者删除操作 */ int main(int argc, const char * argv[]) { @autoreleasepool { /************************* 总结:字符串 **********************************/ //============== NSString =========================== NSString *str = [[NSString alloc] init]; //初始化===================== NSString *str0 = @"Hello World"; NSString *str1 = [[NSString alloc] initWithFormat:@"%@",str0]; /

JavaSE学习总结第21天_IO流3

泄露秘密 提交于 2020-04-02 20:26:10
21.01 转换流出现的原因及格式 由于字节流操作中文不是特别方便,所以,java就提供了转换流。 字符流 = 字节流 + 编码表 21.02 编码表概述和常见编码表 编码表:计算机只能识别二进制数据,早期又来是电信号,为了方便应用计算机,让它可以识别各个国家的文字,就将各个国家的文字用数字来表示,并一一对应,形成一张表,就是编码表。 简单的说编码表就是由字符及其对应的数值组成的一张表。 常见的编码表: ASCII:美国标准信息交换码,用1个字节的7位可以表示 ISO8859-1:拉丁码表,欧洲码表,用1个字节的8位表示 GBK2312:中国的中文编码表 GBK:中国的中文编码表升级,融合了更多的中文文字符号 GB18030:GBK的取代版本 BIG-5码 :通行于台湾、香港地区的一个繁体字编码方案,俗称“大五码” Unicode:国际标准码,融合了多种文字,所有的文字都用2个字节表示,Java中使用的就是Unicode码表 UTF-8:最多用3个字节来表示一个字符(能用一个字节表示的就用一个字节,一个表示不了就用两个,最多用三个字节) 21.03 String类中的编码和解码问题 1.public String(byte[] bytes, String charsetName)throws UnsupportedEncodingException 通过使用指定的 charset

01.JS基本语法-数据类型和变量

老子叫甜甜 提交于 2020-04-01 04:58:59
:JavaScript代码可以直接嵌在网页的任何地方,但一般写在之间,必须要有自己的闭标签 JS的基本结构 <script type="text/javascript"> <!-- JavaScript 语句; --> </script > JS只能在客户端执行,并且不能操作服务器端 引入这个文件 ②JavaScript严格区分大小写 <html> <head> <script src="/static/js/abc.js"></script> </head> <body> ... </body> </html> 变量 变量名是大小写英文、数字、$和_的组合,且不能用数字开头。变量名也不能是JavaScript的关键字,声明变量赋值时指明数据类型: var width=5; var a; // 申明了变量a,此时a的值为undefined var $b = 1; // 申明了变量$b,同时给$b赋值,此时$b的值为1 var s_007 = '007'; // s_007是一个字符串 var Answer = true; // Answer是一个布尔值true var t = null; // t的值是null var:提前声明 可以不声明之间赋值【不推荐】 注意 : JavaScript严格区分大小写 js是一门动态语言 strict模式