数组

《JavaScript and jQuery The Missing Manual》学习笔记之JavaScript基础语法

拥有回忆 提交于 2020-03-30 04:48:53
看完前三章,这本书真的是注重于jquery部分啊。。。泪奔中。。。算了,既然开坑了,就默默地把它给填上== 1.JavaScript 中只有三种数据类型: number, string, boolean ( true 和 false )。 2.JavaScript 中变量名只能由字母、数字、 $ 和 _ 组成,不能以数字开头,也不能与已有的关键字重名。而且 JavaScript 是一种对大小写敏感的语言。 以下是 JavaScript 中的关键字: 3.不能将一个引号内的字符串分割成两行( Java 跟 C# 貌似也是一样的 == ) 4.JavaScript 中采用 + 号连接字符串,就跟 Java 和 C# 一样。 5.JavaScript 中有两种方法将字符串转换为数字:一 . 在变量名前加上 + 号(中间不能有空格);二 . 使用 Number( 变量名 ) 。 注:若字符串不能够转换为数字,则会得到 NaN ( not a number )值。 6.JavaScript 中创建数组的方式主要有两种: 一.var days = [‘Mon’, ‘Wen’] ;(注,中括号内的内容可以为空) 二.var days = new Array(‘Mon’, ‘Wen’); (第一种方式更受专业人士欢迎,因为输入字符少些。。。) 7.数组中可以放置各种不同类型的数据,如: var

js 测试

依然范特西╮ 提交于 2020-03-30 03:56:45
今天js测试题目: 被基础题目虐暴。。。。。。惨不忍睹 1. var num = 2; switch(num){   case 1: console.log("1");   case 2: console.log("2");   default: console.log("default"); }输出结果为()// 2和default; 从2进入switch,因为没有break;所以2以后的都要执行。 2.js中的命名法: 1)匈牙利命名法 2)大驼峰 3)小驼峰 4)下划线命名法 (当时没有想起来!!) 3.在数组末端添加元素 push(); 在数组末端删除元素 pop(); 在数组第一个位置添加元素 unshift(); 在数组第一位置删除元素 shift(); 颠倒数组元素 reverse(); 4.生成对象的三种方法: 1) var obj = {}; 2) var obj = new Object(); 3) Var obj = Object.create(null); // 他是基于另一个对象而生成的对象,可以继承上一个对象的属性,也可以添加和改变。 var obj1 = { name : "zdh", age: 21 } var obj2 = Object.create(obj); console.log(obj2.age); //21

数组中的第K个最大元素

♀尐吖头ヾ 提交于 2020-03-30 03:02:03
package main import ( "sort" "fmt" ) func main() { /* 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 */ arr := []int{3, 2, 1, 5, 6, 4} flag := 2 // 逆序!!! sort.Sort(sort.Reverse(sort.IntSlice(arr))) fmt.Println(arr) fmt.Println(arr[flag-1]) }    来源: https://www.cnblogs.com/yzg-14/p/12596262.html

数组中的逆序对

十年热恋 提交于 2020-03-30 02:48:48
package main import "fmt" func main() { /* 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 示例 1: 输入: [7,5,6,4] 输出: 5 */ arr := []int{7, 5, 6, 4} flag := 0 for i := 1; i < len(arr); i++ { for j := i; j < len(arr); j++ { // arr[j] 当这个需要的是变量时,就用一层for循环包起来,提供变量 if arr[i-1] > arr[j] { flag++ } } } fmt.Println(flag) }    来源: https://www.cnblogs.com/yzg-14/p/12596294.html

iOS各种调试技巧豪华套餐

守給你的承諾、 提交于 2020-03-30 01:27:14
  在iOS开发过程中,调试是很重要的过程,而除了各种断点调试(普通断点、条件断点、全局断点)之外,似乎NSLog是我们调试最常用的方法,当然,也是最简单朴素的寻debug方法。   在项目中,我们常使用的NSLog的语句无外乎以下一种:    NSLog(@"打印字符串:%@",name); NSLog(@"打印整形:%i",number);//或者 %li ; %ld ; %d NSLog(@"打印字符:%c",c); NSLog(@"打印单浮点数:%f",f); NSLog(@"打印精度浮点数:%.2f",f); NSLog(@"BOOL--b-->%@",isYES?@"YES":@"NO");//打印布尔类型   但这样并不是我们想要的结果,因为打印出来的结果,有时我们并不知道它打印的具体位置,甚至于具体信息。打个比方吧,我们经常会遇到的数组越界、网络请求数据为空等等。   我们试一下看看:创建一个空数组-->dataArray,却打印数组的第三个元素。打印结果如下图:     从上图中我们可以看出,一个标准的数组越界,但我们看得出来,debug输出只是说又一个数组越界报错了,但并没有指出是哪个数组,数组在哪个位置。。。试想:如果我们在一个ViewController中有几个数组,这时数组出现越界。就会很难找出到底哪个数组出现debug。那么问题就出现了

java集合对比

南笙酒味 提交于 2020-03-29 20:59:14
list与Set、Map 区别及适用场景 1、List,Set都是继承自Collection接口,Map则不是 2、List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set 的Object必须定义equals()方法 ,另外list支持for循环,也就是通过下标来遍历,也可以用迭代器,但是set只能用迭代,因为他无序,无法用下标来取得想要的值。) 3.Set和List对比: Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。 List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。 4.Map适合储存键值对的数据 5.线程安全集合类与非线程安全集合类 LinkedList、ArrayList、HashSet是非线程安全的,Vector是线程安全的; HashMap是非线程安全的,HashTable是线程安全的; StringBuilder是非线程安全的,StringBuffer是线程安全的。 下面是具体的使用介绍: ArrayList与LinkedList的区别和适用场景 Arraylist: 优点

Java中的集合类

倖福魔咒の 提交于 2020-03-29 20:25:30
Java集合类与数组的区别:Java的集合类的长度是动态的,数组则是固定长度的。 Java集合类与数组的联系:使用相应的toArray()和Arrays.asList()方法可以互相转换。 首先来看看Java集合框架中的接口: Collection接口实现类中存放的是元素和Map接口实现类中存放的是键值对。 Set接口和List接口:Set接口不保证维护元素的顺序,而且元素不能重复。List接口维护元素的顺序,而且元素可以重复。 SortedSet和SortedMap提供了排序的功能。 再来看看接口的实现: HashSet和LinkedHashSet:HashSet,为快速查找而设计的Set。存入HashSet的对象必须实现hashCode()和equals()。LinkedHashSet,具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序),于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。 TreeSet: 提供排序功能的Set,底层为树结构 。相比较HashSet其查询速度低,如果只是进行元素的查询,我们一般使用HashSet。 ArrayList和LinkedList:ArrayList底层采用数组实现,具有较高的查询速度。LinkedList底层采用双向循环列表实现,进行插入和删除操作时具有较高的速度

JS 7种数组去重的方法

泄露秘密 提交于 2020-03-29 17:46:45
JS 数组去重的方法 方法一:多层循环比较 利用splice的特性,比较两个数是否相同,获得相同元素的下标,删除相同元素,改变原数组,获得去重后的数组 function uniqueArr(arr){ for(var i = 0;i < arr.length ;i++){ for(var j = i + 1;j < arr.length - 1; j++){ if(arr[i] == arr[j]){ arr.splice(j,1); } } } return arr; } 方法二:利用indexOf() 设置一个新的数据用来接收数据,利用indexOf 来判断 数据是否存在于 新数组中,不存在,则添加进去,获得去重后的新数组 function uniqueArr(arr){ var newArr = []; for(var i = 0;i < arr.length;i++){ if(newArr.indexOf(arr[i]) < 0){ newArr.push(arr[i]); } } return newArr; } 方法三:对象键值对法 定义一个对象,用数组中的元素作为对象属性名,如果对象名不存在,那么将该元素添加到新数组中,给对应的属性值 设置 一个值作为标记,不一定为1,获得去重后的新数组 function uniqueArr(arr){ var obj = {};

一些面试题,转关注的一个博客

一个人想着一个人 提交于 2020-03-29 12:13:37
腾讯面试题: tcp 三次握手的过程, accept 发生在三次握手哪个阶段? 答accept发生在三次握手之后。 第一次握手:客户端发送syn包(syn=j)到服务器。 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。 三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。 const 的含义及实现机制,比如: const int i, 是怎么做到 i 只可读的? const用来说明所定义的变量是只读的。 这些在编译期间完成,编译器可能使用常数直接替换掉对此变量的引用。 用 UDP 协议通讯时怎样得知目标机是否获得了数据包 可以在每个数据包中插入一个唯一的ID,比如timestamp或者递增的int。 发送方在发送数据时将此ID和发送时间记录在本地。 接收方在收到数据后将ID再发给发送方作为回应。 发送方如果收到回应,则知道接收方已经收到相应的数据包;如果在指定时间内没有收到回应,则数据包可能丢失,需要重复上面的过程重新发送一次,直到确定对方收到。 求一个论坛的在线人数,假设有一个论坛,其注册 ID 有两亿个,每个 ID 从登陆到退出会向一个日志文件中记下登陆时间和退出时间

5数组指针和引用:数组

谁说我不能喝 提交于 2020-03-29 10:06:19
数组 一维数组:数据类型 数组名 [常量表达式] 注意: 命名规则和变量名相同 数组后面一定是[],方括号内 是常量表达式 常量表达式表达元素的个数,即数组的长度 定义数组的常量表达式不能是变量 引用: 一维数组引用的一般形式:数组名[下标] 数组元素的下标起始值为0 初始化: 单个元素逐一赋值 a[10]=1;a[9]=100;...... 聚合方式赋值 int a[10]={1,2,.....10} ; int a[]={1,2,.....10} ; int a[10]={1,2,.....7} 没被赋值的元素 默认补0 二维数组:数据类型 数组名[常量表达式1][常量表达式2] 注意: 数组名按照标识符命名 二维数组有两个下标 a[3][4] 下标一定是整数a[3][4]表示有12个元素 声明的时候 下标不能是变量 一维数组:连续的内存单位进行排序 二维数组:存储形式与一维相同 引用: 数组名[下标][下标] 起始值从0开始 初始化: 单一元素逐一赋值 聚合方式赋值 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int a[3][4]={1,2,3,4} 后面补0; int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}} 字符数组:char 数组名 [常量表达式] 初始化: 聚合方式 char a