htm页面转数组,页面上显示文字,源代码显示被转码了,显示字符串,是为什么?怎么转化成文字?

在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总结,很多时候就算用过几次这个api,在开发中也很容易忘记,还是要谷歌一下

在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总结,很多时候就算用过几次这个api,在开发中也很容易忘记,还是要谷歌一下。所以就希望对这块内容有一个比较系统性的总结,在这背景下,就有了本篇文章,如果喜欢的话可以点波赞/关注,支持一下,希望大家看完本文可以有所收获。

// 这个方法也是我们最常用的,在初始化数组的时候 相当方便
 

定义:返回由所有参数值组成的数组,如果没有参数,就返回一个空数组。

目的:Array.of() 出现的目的是为了解决上述构造器因参数个数不同,导致的行为有差异的问题。

 

定义:用于将两类对象转为真正的数组(不改变原对象,返回新的数组)。

第一个参数(必需):要转化为真正数组的对象。

第二个参数(可选): 类似数组的map方法,对每个元素进行处理,将处理后的值放入返回的数组。

第三个参数(可选): 用来绑定this。

 

数组原型提供了非常多的方法,这里分为三类来讲,一类会改变原数组的值,一类是不会改变原数组,以及数组的遍历方法。

改变原数组的方法(9个):

 

对于这些能够改变原数组的方法,要注意避免在循环遍历中改变原数组的选项,比如: 改变数组的长度,导致遍历的长度出现问题。

pop() 删除一个数组中的最后的一个元素

定义: pop() 方法删除一个数组中的最后的一个元素,并且返回这个元素。

 

shift() 删除数组的第一个元素

定义: shift()方法删除数组的第一个元素,并返回这个元素。

 

push() 向数组的末尾添加元素

定义:push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

 

定义:unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

 

定义: reverse() 方法用于颠倒数组中元素的顺序。

 

定义: splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目

  1. index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
  2. howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。

返回值: 如果有元素被删除,返回包含被删除项目的新数组。

// 从数组下标0开始,删除3个元素
// 从最后一个元素开始删除3个元素,因为最后一个元素,所以只删除了7
// 从数组下标0开始,删除3个元素,并添加元素'添加'
// 从数组最后第二个元素开始,删除3个元素,并添加两个元素'添加1'、'添加2'
 

从上述三个栗子可以得出:

  1. 数组如果元素不够,会删除到最后一个元素为止
  2. 操作的元素,包括开始的那个元素
  3. 添加是在开始的元素前面添加的

定义: sort()方法对数组元素进行排序,并返回这个数组。

参数可选: 规定排序顺序的比较函数。

默认情况下sort()方法没有传比较函数的话,默认按字母升序,如果不是元素不是字符串的话,会调用toString()方法将元素转化为字符串的Unicode(万国码)位点,然后再比较字符。

// 字符串排列 看起来很正常
// 数字排序的时候 因为转换成Unicode字符串之后,有些数字会比较大会排在后面 这显然不是我们想要的
 

sort的比较函数有两个默认参数,要在函数中接收这两个参数,这两个参数是数组中两个要比较的元素,通常我们用 a 和 b 接收两个将要比较的元素:

  • 若比较函数返回值<0,那么a将排到b的前面;
  • 若比较函数返回值=0,那么a 和 b 相对位置不变;
  • 若比较函数返回值>0,那么b 排在a 将的前面;

对于sort()方法更深层级的内部实现以及处理机制可以看一下这篇文章

sort排序常见用法:

1、数组元素为数字的升序、降序:

 
 

3、自定义比较函数,天空才是你的极限

类似的:运用好返回值,我们可以写出任意符合自己需求的比较函数

 

定义: 在当前数组内部,将指定位置的成员复制到其他位置,并返回这个数组。

三个参数都是数值,如果不是,会自动转为数值.

  1. target(必需):从该位置开始替换数据。如果为负值,表示倒数。
  2. start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示倒数。
  3. end(可选):到该位置前停止读取数据,默认等于数组长度。使用负数可从数组结尾处规定位置。
// -2相当于3号位,-1相当于4号位
// 2位置开始被替换,3位置开始读取要替换的 5位置前面停止替换
 
  1. 第一个参数是开始被替换的元素位置
  2. 要替换数据的位置范围:从第二个参数是开始读取的元素,在第三个参数前面一个元素停止读取
  3. 读了几个元素就从开始被替换的地方替换几个元素

定义: 使用给定值,填充一个数组。

第一个元素(必须): 要填充数组的值

第二个元素(可选): 填充的开始位置,默认值为0

第三个元素(可选):填充的结束位置,默认是为this.length

 

不改变原数组的方法(8个):

定义: join() 方法用于把数组中的所有元素通过指定的分隔符进行分隔放入一个字符串,返回生成的字符串。

str(可选): 指定要使用的分隔符,默认使用逗号作为分隔符。

 

使用join方法或者下文说到的toString方法时,当数组中的元素也是数组或者是对象时会出现什么情况?

 

定义: 返回一个表示数组元素的字符串。该字符串由数组中的每个元素的 toLocaleString() 返回值经调用 join() 方法连接(由逗号隔开)组成。

 

定义: toString() 方法可把数组转换为由逗号链接起来的字符串。

该方法的效果和join方法一样,都是用于数组转字符串的,但是与join方法相比没有优势,也不能自定义字符串的分隔符,因此不推荐使用。

值得注意的是:当数组和字符串操作的时候,js 会调用这个方法将数组自动转换成字符串

 

定义: 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象,且原数组不会被修改。

注意:字符串也有一个slice() 方法是用来提取字符串的,不要弄混了。

begin(可选): 索引数值,接受负值,从该索引处开始提取原数组中的元素,默认值为0。

end(可选):索引数值(不包括),接受负值,在该索引处前结束提取原数组元素,默认值为数组末尾(包括最后一个元素)。

 

如上:新数组是浅拷贝的,元素是简单数据类型,改变之后不会互相干扰。

如果是复杂数据类型(对象,数组)的话,改变其中一个,另外一个也会改变。

 

原因在定义上面说过了的:slice()是浅拷贝,对于复杂的数据类型浅拷贝,拷贝的只是指向原数组的指针,所以无论改变原数组,还是浅拷贝的数组,都是改变原数组的数据。

定义: 方法用于合并两个或多个数组,返回一个新数组。

arrayX(必须):该参数可以是具体的值,也可以是数组对象。可以是任意多个。

// 合并嵌套数组 会浅拷贝嵌套数组
 

ES6扩展运算符...合并数组:

因为ES6的语法更简洁易懂,所以现在合并数组我大部分采用...来处理,...运算符可以实现cancat的每个栗子,且更简洁和具有高度自定义数组元素位置的效果。

 

更多关于扩展符的详细内容移步阮一峰大神的

indexOf() 查找数组是否存在某个元素,返回下标

定义: 返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。

fromIndex(可选):开始查找的位置(不能大于等于数组的长度,返回-1),接受负值,默认值为0。

数组的indexOf搜索跟字符串的indexOf不一样,数组的indexOf使用严格相等===搜索元素,即数组元素要完全匹配才能搜索成功。

 
  1. 根据获取的数组下标执行操作,改变数组中的值等。
  2. 判断是否存在,执行操作。

lastIndexOf() 查找指定元素在数组中的最后一个位置

定义: 方法返回指定元素,在数组中的最后一个的索引,如果不存在则返回 -1。(从数组后面往前查找)

fromIndex(可选): 逆向查找开始位置,默认值数组的长度-1,即查找整个数组。

  1. 正值。如果该值大于或等于数组的长度,则整个数组会被查找。
  2. 负值。将其视为从数组末尾向前的偏移。(比如-2,从数组最后第二个元素开始往前查找)
  3. 负值。其绝对值大于数组长度,则方法返回 -1,即数组不会被查找。

 

定义: 返回一个布尔值,表示某个数组是否包含给定的值

fromIndex(可选):默认值为0,参数表示搜索的起始位置,接受负值。正值超过数组长度,数组不会被搜索,返回false。负值绝对值超过长数组度,重置从0开始搜索。

  1. indexOf方法检查是否包含某个值不够语义化,需要判断是否不等于-1,表达不够直观
 

js中遍历数组并不会改变原始数组的方法总共有12个:

  • 关于遍历的效率,可以看一下这篇
  • 尽量不要在遍历的时候,修改后面要遍历的值
  • 尽量不要在遍历的时候修改数组的长度(删除/添加)

定义: 按升序为数组中含有效值的每一项执行一次回调函数。

function(必须): 数组中每个元素需要调用的函数。

  • 无法中途退出循环,只能用return退出本次回调,进行下一次回调。

下面类似语法同样适用这些规则

1. 对于空数组是不会执行回调函数的
2. 对于已在迭代过程中删除的元素,或者空元素会跳过回调函数
3. 遍历次数再第一次循环前就会确定,再添加到数组中的元素不会被遍历。
4. 如果已经存在的值被改变,则传递给 callback 的值是遍历到他们那一刻的值。

 a.push('添加到尾端,不会被遍历')
// 回调函数也接受接头函数写法

every 检测数组所有元素是否都符合判断条件

定义: 方法用于检测数组所有元素是否都符合函数定义的条件

function(必须): 数组中每个元素需要调用的函数。

  1. 如果数组中检测到有一个元素不满足,则整个表达式返回 false,且剩余的元素不会再进行检测。
  2. 如果所有元素都满足条件,则返回 true。=
// 接受箭头函数写法 
 

some 数组中的是否有满足判断条件的元素

定义:数组中的是否有满足判断条件的元素

function(必须): 数组中每个元素需要调用的函数。

  1. 如果有一个元素满足条件,则表达式返回true, 剩余的元素不会再执行检测。
  2. 如果没有满足条件的元素,则返回false。

 

filter 过滤原始数组,返回新数组

定义: 返回一个新数组, 其包含通过所提供函数实现的测试的所有元素。

function(必须): 数组中每个元素需要调用的函数。

 

map 对数组中的每个元素进行处理,返回新的数组

定义:创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

function(必须): 数组中每个元素需要调用的函数。

 

reduce 为数组提供累加器,合并为一个值

定义:reduce() 方法对累加器和数组中的每个元素(从左到右)应用一个函数,最终合并为一个值。

function(必须): 数组中每个元素需要调用的函数。

  • 如果 initialValue 未被提供,那么 total 等于数组中的第一个值,currentValue 等于数组中的第二个值。此时如果数组为空,那么将抛出 TypeError。
  • 如果数组仅有一个元素,并且没有提供 initialValue,或提供了 initialValue 但数组为空,那么回调不会被执行,数组的唯一值将被返回。
// 将二维数组转化为一维 将数组元素展开
 

这个方法除了与reduce执行方向相反外,其他完全与其一致,请参考上述 reduce 方法介绍。

find()定义:用于找出第一个符合条件的数组成员,并返回该成员,如果没有符合条件的成员,则返回undefined。

findIndex()定义:返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。

 

参数:(这几个方法的参数,语法都类似)

function(必须): 数组中每个元素需要调用的函数。

这两个方法都可以识别NaN,弥补了indexOf的不足.

 

定义:三个方法都返回一个新的 Array Iterator 对象,对象根据方法不同包含不同的值。

 
 

在for..of中如果遍历中途要退出,可以使用break退出循环。

如果不使用for...of循环,可以手动调用遍历器对象的next方法,进行遍历:

 

注意:目前只有Safari 9支持,,其他浏览器未实现,babel转码器也还未实现

呼~终于写好了,断断续续,上班也偷偷划水的写了几天,虽说很辛苦,但是现在对数组操作方法,整体清晰了很多,各个API也理解的更好一点了,收获颇多,文章如有不正确的地方欢迎各位大佬鞭策!希望大家看完可以有所收获,喜欢的话,赶紧点波订阅关注/喜欢。

希望看完的朋友可以点个喜欢/关注,您的支持是对我最大的鼓励。

 and ,如需转载,请放上原文链接并署名。码字不易,感谢支持!本人写文章本着交流记录的心态,写的不好之处,不撕逼,但是欢迎指点。

}

把一个或者多个元素的事件委托到它的父元素或者更外层元素上,这主要得益于浏览器的事件冒泡机制

1)减少内存消耗,动态绑定事件

(一次完整的HTTP事务是一个怎样的过程----------客户端和服务端建立连接;客户端发送请求,服务端响应客户端请求并发送回数据客户端和服务端断开链接这四个过程

域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

56、HTTP协议可以用UDP协议实现吗?

HTTP是一个基于TCP的协议。不过,目前,有人正在研究基于TCP+UDP混合的HTTP协议 

HTTP协议是建立在请求/响应模型上的

首先,由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及 相关的MIME样式的消息

然后,服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息

4xx:客户端错误状态码,表示客户端的请求有非法内容

400 Bad Request: 表示客户端请求有语法错误,不能被服务器所理解.

比如,使用post方法,type=file的input的value不能为空,如果为空的话,服务器读不到这个值,那么就会报400错误

403 Forbidden :表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因

404 Not Found :请求的资源不存在,例如,输入了错误的URL

5xx:服务器错误状态码,表示服务器未能正常处理客户端的请求而出现意外错误。

500 Internel Server Error: 表示服务器发生不可预期的错误,导致无法完成客户端的请求

这个有可能是因为在界面中的input输入框的输入值形式和服务器那边的定义形式不一样,然后就会报500

503 Service Unavailable: 表示服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常

44、http请求中,哪些字段可以设置缓存

 用于指定所有缓存机制在整个请求/响应链必须服从的指令,如果知道该页面是否为缓存,不仅可以控制浏览器,还可以控制和HTTP相关的缓存或代理服务器。它可以指定下列可选值:
    3、no-cache:所有内容都不会被缓存,在请求头和响应头中设置

var len; //因为声明的多个函数都需要数据长度,所以把len设置成为全局变量 function heapify(arr, i) { //堆调整,也就是进行一层的节点调整,父节点和子节点的比较大小,然后对位置进行调整 //父节点要和他的两个子节点比较大小 // 父节点和左孩子节点比较 // 父节点和右孩子节点比较 len--; //从数组中排除掉已经找到实际位置的元素

7) 计数排序:计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中;作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。

非基于比较的,它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。牺牲空间换取时间的做法,当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序

假设数序列中小于元素a的个数为n,则直接把a放到第n+1个位置上。当存在几个相同的元素时要做适当的调整,因为不能把所有的元素放到同一个位置上。计数排序假设输入的元素都是0到k之间的整数。

// 数组中的元素作为另一个空间的索引,利用flag去判断是否有这个元素, // 有则将开辟空间的 索引放进源数组中 return '输入参数不符合规定的个数'; newArr[arr[i]] = 1; //将原数组中的元素作为newArr的索引,并将这个索引对应的元素的值标记为1
}

自己做的,用来把字符串转成Unicode, UTF8或者Ansi代码值的软件. 转成的结果可以显示为数组或者\0x的字符串.

}

我要回帖

更多关于 字符串转html标签 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信