数组(待完成)

创建

 

字面量方式

var arr = [];
var arr = ["成员1", 2];//可以是不同成员

 

构造函数方式

空的

var array = new Array();

 

指定长度

var array2 = new Array(10);

成员值都是undefined。此方式有技巧使用

虽然值是undefined,但join后不会出现undefined字符串

比如:

new Array(10).join('') // 依然返回空字符串
new Array(10).join('x') // 9个x
new Array(10).join('<li></li>') // 9个li标签

 

length

可读写属性

读操作

都懂...略过

 

写操作

操作(比之前多):相当于末尾追加了成员,初始值为undefined

 

操作(比之前少):少了多少相当于 末尾删了多少

数组对length属性进行减少的 写操作,成员真的减少了。

有时候想,length属性如果没真正删除,reverse反转后是不是能把删除的反过来?而实际上,

reverse反转操作正常(强调:正常指并没有把删掉的成员反转过来)

 

div1.innerHTML = array.length;

 

 

 

转换

字符串转数组-split

String.split([string])

 

给参情况

用字符串中指定子串 将 字符串 切割成 数组

'张,李,陈,黄'.split(',');//["张", "李", "陈", "黄"]

 

空字符串情况

将每个字符分割成数组

'张,李,陈,黄'.split('');//["张", ",", "李", ",", "陈", ",", "黄"]

 

不给参情况

返回只有原字符串一个成员的数组

'张,李,陈,黄'.split();//["张,李,陈,黄"]

 

数组转字符串-join

用指定字符串 将 数组 连接成 字符串

[
'张', '李', '陈', '黄'
].join('-');// '张-李-陈-黄'

 

不带参:

[
'张', '李', '陈', '黄'
].join();// '张,李,陈,黄'

似乎默认使用了逗号相连

也可以说是 直接将数组转换成字符串

 

数组length=1

['张'].join('-');// '张'

 

数组length=0

[].join('-').length===0;//true。看来是空字符串...

集合转数组-slice技巧

集合指的是那种有length属性的类数组对象

 

HTMLCollection 集合例子

eItems = [].slice.call(document.body.children, 0);

这种集合ie678不支持,参数3不会影响HTMLCollection集合

 

对象模拟 例子

var obj = {0: 0,1: 1,length: 10
};
var arr = [].slice.call(obj, 0);
arr.lenght; // 10

这种支持包括ie6的所有。参数3如果给,将影响obj。不给或者负数都不影响

 

其他splice用法见 [splice增删详解]

 

数组转字符串-toString

arr.toString() 相当于 arr.join(',')

var arr = ['成员1', '成员2', {}];
arr.toString() //成员1,成员2,[object Object]
arr.join(',') //成员1,成员2,[object Object]

 

增成员

 

追加

 

底部-push

array.push("烧饼1");

头部-unshift

array.unshift("烧饼0");

 

返回值

返回更改后的数组长度

 

指定位置增加

指定 索引位置增加

如原来位置存在元素,则覆盖。。。

var arr=[];
arr[3]=1;
console.log(arr.length);// 4

 

删成员

 

使用delete操作符

删第一个

var arr=["张", "李", "陈", "黄"];
delete arr[0];
console.log(arr[0]);// undefined
console.log(arr.length);// 4

 

删最后一个

var arr=["张", "李", "陈", "黄"];
delete arr[3];
console.log(arr[3]);// undefined
console.log(arr.length);// 4

 

两个例子说明,只是把值换成了undefined了,length不变

使用for in无法循环出删掉的成员了,如果强行赋值undefined,又能循环出来,看来真删除了。

或者说这只是对象的特性而已,数组也是对象嘛

 

兼容性:包括ie6的所有

 

使用shift pop splice 删除

 

见 [取成员]

 

通过设置length

var arr=["张", "李", "陈", "黄"];
arr.length=1;
console.log(arr);//["张"] 。真的就只有这么一个了!!

 

兼容性:包括ie6的所有

 

详情 见 [length] 写操作

 

改成员

根据索引覆盖操作。都懂...

var arr=['张', '李', '陈', '黄'];
arr[0]='xx';

 

取成员

单个,一般获取

根据索引获取

var arr=['张', '李', '陈', '黄'];
console.log(arr[0]);
console.log(arr['0']);// 根据以前的笔记说firefox这样不行?反正现在是行了...

单个,带删除 的获取

取一个便少一个。将更改 原数组

 

取第一个

arr.shift();

 

取最后一个

arr.pop();

 

取指定

使用splice实现

var arr=['张', '李', '陈', '黄'];
arr.splice(2, 1);// '陈'。取到了第3个成员
arr;// ['张', '李', '黄']

 

多个,带删除splice

取多个指定成员,取多少原数组便会减多少

Array.splice(开始索引,数量)

返回一个新数组,装载取到的成员

 

splice 增删详解

 

参考网址:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

 

语法

array.splice(start, deleteCount[, item1[, item2[, ...]]])

 

 

参数:

 start 必须。起始索引,负数表示从尾部开始起始

 deleteCount 必须(实测可以不带)。删除的个数(含第 start 位)

  0或负数都表示不删除,一般用0

  超出情况将删除index之后的所有成员

  技术文档都说这个是必须,实测不带也可以,不带将删除start(包含start)之后的所有

 itemN 可选,要增加的成员。将从 start 位置处增加。将把start位置以及后面的元素往后挤

 

返回值:

被删掉的成员组成的新数组

没有被删返回空数组

 

将更改原始数组:

deleteCount 删除、itemN 增加 将应用到原数组中。而被删除的成员将拼成一个新数组被返回

 

兼容:

包括ie6的所有

 

关于clone:

splice不能实现clone,arr.concat、arr.slice可以实现

 

 

slice 复制数组

 

可指定位置进行复制

 

语法

arr.slice(begin[, end])

 

 

参数

begin

开始索引,从0开始

可以是负数,负数情况 相当于 length + begin,相减后结果如果还是负数将视0为起始

包含,新数组将包含此位置的值

经测试此参数也是可选的,省略情况相当于arr.slice(0)

 

end

结束索引,从0开始

省略此参数将将一直取到原数组末尾

可以是负数,负数情况原理同begin一样

不包含,新数组将不包含此位置的值

小于或者等于begin 将 返回空数组,负数情况也如此

 

返回新数组

 

不更改原数组

 

完全复制

不带参或者 begin 为 0 即可实现完全复制

 

兼容性

包括 ie6 的所有浏览器

 

concat 合并数组

实现 合并 或者 追加。返回一个新数组

数组情况是合并,非数组是追加。

var arr = ['成员1', '成员2', '成员3'],
arr.concat('成员4',['成员5'])// ["成员1", "成员2", "成员3", "成员4", "成员5"]

 

语法:

array.concat(value1, value2, ..., valueN)

 

参数:

 valueN 可选,不带参将实现复制  

 

关于合并:

就是将数组的所有子成员追加进来,相当于如果参数是数组,那么你当它没有中括号吧。

合并只限于子级, 如果子成员还是数组 ,不会再去合并,此数组将视为成员。

var arr = ['成员1', '成员2', '成员3'],arr2= ['成员4',['成员5']];
var newArr = arr.concat(arr2);
console.log(newArr); // ["成员1", "成员2", "成员3", "成员4", ["成员5"]]

 

返回值:

合并后的数组

 

不更改原数组,也不会更改作为参数的数组
var arr = ['成员1', '成员2', '成员3'],arr2= ['成员4','成员5'];
var newArr = arr.concat(arr2);console.log(arr); // ["成员1", "成员2", "成员3"]
console.log(arr2); // ["成员4", "成员5"]
console.log(newArr); // ["成员1", "成员2", "成员3", "成员4", "成员5"]

 

可实现clone

不带参即可

slice也可以实现clone

var arr = ['成员1', '成员2', '成员3'];
var newArr = arr.concat();

兼容性:包括ie6的所有

 

sort 排序

默认排序,将按字符排序

不带参即可,升序,即小的在前面。

 

将更改原数组

 

汉字

的话根据 Unicode编码,并非按照拼音

['陈','张', '黄','李'].sort();//["张", "李", "陈", "黄"] 

上例中,如果按照拼音,'陈'应该在最前才对。而输出字符对于的Unicode编码是 5F20 674E 9648 9EC4,这很明显

推想,估计所有字符,包括字母都是按照编码来的

 

字符排序探索

逐个字符进行对比(如果是数字,并非根据数量)

[100,99].sort()// [100, 99]

其实,如果看了下面的自定义排序,上例的结果感觉应该是这么来的。转字符串,再比较

'100'<'99'// true

 

自定义排序

下例实现数字排序。例子为降序。升序 将1 和 -1 调换即可

([2, 33, 12, 6, 3333]).sort(function (v1, v2) {if (v1 < v2) return 1;if (v1 > v2) return -1;return 0;// 不处理
})

 

强调:将更改原数组

 

有返回值

虽然更改了原数组,但还是有返回值,返回更改后的原数组,或者说返回原数组引用

 

 

reverse 数组反转

差不多就是将整个数组倒过来,第一个位置就是 最后一个成员了

arr.reverse();

toSource??

返回代表特定数组的数组常数,可以用来建立新的数组 

 

valueOf??

取得数组值

 

数组类型判断

 

 

 

转载于:https://www.cnblogs.com/cqlql/p/5673039.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware打开虚拟机黑屏

排除系统崩溃的情况&#xff0c;比如开机输入密码之后系统黑屏&#xff0c;此原因是由于显示选项开启了3D加速导致的&#xff0c;具体修改步骤&#xff1a; VM->Settings->Hardware->Display 在右面的内容栏中将 Accelerate 3D graphics 取消打勾&#xff0c;然后重启…

[python3.x] 利用chardet检测网页编码

环境&#xff1a;Win7_x64 python3.4.3 需要先下载chardet并进行安装&#xff0c;下载地址&#xff1a;https://pypi.python.org/packages/source/c/chardet/chardet-2.3.0.tar.gz 安装&#xff1a;进入解压后的目录&#xff0c;在命令窗口执行: python setup.py install 写…

js moment时间戳与时间格式相互转换

var moment require(moment) 获取时间戳 : var res moment(Date.now(), YYYY-MM-DD HH:mm:ss).valueOf(); 获取格式时间: var res moment(Date.now()).format(YYYY-MM-DD HH:mm:ss);

微信小程序中base64转换成图片;uni-app小程序base64转图片;微信小程序base64文件转图片;微信小程序base64图片转图片

将微信小程序的图片转成base64 点击此链接看另一篇 以下是将后端返回的base64转成图片&#xff1a; 方法1&#xff1a;使用微信小程序自带方法 //把base64转换成图片getBase64ImageUrl: (base64Url) {/// 获取到base64Datavar base64Data base64Url;/// 通过微信小程序自带方…

PHP流式上传和表单上传(美图秀秀)

最近需要开发一个头像上传的功能&#xff0c;找了很多都需要授权的&#xff0c;后来找到了美图秀秀&#xff0c;功能非常好用。 <?php /*** Note:for octet-stream upload* 这个是流式上传PHP文件* Please be amended accordingly based on the actual situation*/ $post_i…

Linux下如何安装最新版本工具

此博文主要考虑到两个方面的需求&#xff1a; 1.主机处于离线状态&#xff0c;需要离线安装相关工具包&#xff1b; 2.主机的软件源不是最新的&#xff0c;通过在线更新无法达到需求的版本&#xff1b; 此文以获取openssh相关工具包&#xff0c;其他工具包原理类似&#xff…

element-ui 设置table width %百分比

这里的width12设置成min-width!2% 记得所有column都设置百分比哦 <el-table-columnprop"date"label"日期"min-width"12%"></el-table-column>

笔记一

1、logo用<a>标签包围 并给img设置&#xff1a;border&#xff1a;0&#xff08;放置IE浏览器出现框&#xff09; 2、搜索框内有图片&#xff0c;处理方式&#xff1a; 父级div设置border&#xff0c;并调好位置 子级input设置border 0 ;height 100% 图标用<span>包…

[笔记]java-package

[笔记]java&#xff0d;package import 关键字导入一个完整的库时,就会获得“包”(Package)。例如: import java.util.*; 若想导入单独一个类,可在 import 语句里指定那个类的名字: import java.util.Vector; 为 Java 创建一个源码文件的时候,它通常叫作一个“编辑单元”(有时也…

如何安装sshd服务用于远程登录

此博文前提是系统默认没有安装openssh-server&#xff0c;而且现在大部分系统默认只包含openssh-client&#xff0c;这对于需要远程调试和管理的开发者们很不方便&#xff0c;因此本文探讨如何离线安装sshd服务&#xff0c;对于可以在线安装的就比较方便了&#xff0c;可参阅其…

C++中const、volatile、mutable的用法

From: http://blog.csdn.net/wuliming_sc/article/details/3717017 const修饰普通变量和指针 const修饰变量&#xff0c;一般有两种写法&#xff1a; const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是&#xff1a;const修饰的类型为TYPE的变…

调用未绑定的父类方法和使用supper 函数 之间的选择.

class New_int(int): # 定义一个新的类 继承 int 类def __add__(self,other): # 重写 运算符 # __add__ 就是 int 中 的行为return int.__sub__(self,other) # 重写的 加法运算符 调用 int类 里面的 减法运算运算符def __sub__(self,other):return int.__add__(self…

VMware Tools installation cannot be started manually while Easy Install is in progress.

出现此错误提示主要是由于虚拟机设置里面 CD/DVD 和 Floppy 选项被占用导致 VMware Tools 虚拟光驱无法加载导致&#xff0c;因此设置如下&#xff1a; VM –> Settings –> Hardware –> CD/DVD && CD/DVD 2 && Floppy 这三个选项全部设置为 Auto d…

派生类类型可以转换为基类类型,反之则不行

派生类的对象都含有基类对象作为其一部分&#xff0c;我们可以将指向派生类型的引用转换为指向它的基类型的引用&#xff0c;像转换指针一样&#xff0c;我们可以用派生类的对象初始化或赋值基类对象&#xff0c;反之却不行。class base{ public: }; class derived:public base…

Mac 下隐藏显示隐藏文件

直接使用快捷键&#xff1a; 在 macOS Sierra&#xff0c;可以使用快捷键⌘⇧.(Command Shift .) 来快速&#xff08;在 Finder 中&#xff09;显示和隐藏隐藏文件了。 Mac 下隐藏显示隐藏文件

/bin/tar: 从成员名中删除开头的“/”

From: http://www.361way.com/tar-error/1550.html 今天在使用tar进行打包时&#xff0c;发现报了‘从成员名中删除开头的“/”’的错误。我使用的打包语句如下&#xff1a; [rootbj~]# tar czvf test.tar.gz /root/tomcat/tar: 从成员名中删除开头的“/”/root/tomcat//root…

关于单片机中断

中断&#xff1a;CPU停止当前任务&#xff0c;去处理中断内容&#xff0c;处理完后自动恢复以前任务。 单片机有5个中断源&#xff0c;2个中断优先级&#xff0c;中断受两级控制&#xff1a; 1、CPU开总中断&#xff1b; 2、中断源开中断。 中断源&#xff1a;引起中断事件的类…

不带缓存的I/O和标准(带缓存的)I/O

首先&#xff0c;先稍微了解系统调用的概念&#xff1a;   系统调用&#xff0c;英文名system call&#xff0c;每个操作系统都在内核里有一些内建的函数库&#xff0c;这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核&#xff0c;调用相应的的内核函数完成所…

uni.$emit和uni.$on用法;uni-app微信小程序页面通讯;微信小程序页面通讯

uni-app的官方api uni.$on 场景&#xff1a; 微信小程序两个页面甚至多个页面之间&#xff0c;可能共用一个参数或者需要相互传递使用参数。例如页面A点击按钮&#xff0c;需要把A页面的item数据&#xff0c;赋值给页面B的formData&#xff0c;但是页面A只是传递数据给B&#x…

转:探索 AIX 6:在 AIX 6 上配置 iSCSI Target

引言iSCSI&#xff08;Internet Small Computer System Interface&#xff09;被业界认为是非常廉价的 SAN 解决方案&#xff0c;一直在中低端应用领域被市场所看好。 iSCSI 客户端和服务端都既可以通过硬件方式实现&#xff0c;也能通过软件方式的&#xff0c;其优劣区别就是在…