文档章节

4_引用类型(【一】数组)

1217528969
 1217528969
发布于 2015/02/28 16:04
字数 710
阅读 11
收藏 0
点赞 0
评论 0

在ECMAScript中数组是非常常用的引用类型了。

//定义方式
var arr = new Array();
var arr = [1, 2, 3, 4, true, "abc", new Date()];
console.info(arr.length);
arr.length = 5;
console.info(arr);
console.info(arr.toString());

ECMAScript所定义的数组和其他语言中的数组有着很大的区别。那么首先要说的就是数组也是一种对象。
特点:
    "数组"即一组数据的集合。
    js数组更加类似java的容器。长度可变,元素类型也可以不同!
    数组长度随时可变!随时可以修改!(length属性)
常用方法:
    push、pop

/**
 * push 和 pop方法
 * 修改数组自身
 */
 
var arr = [new Date(), false];
var result = arr.push(1, 2, true); //push方法向数组尾部追加元素,返回追加元素后的数组长度
console.info(result);
console.info(arr);
console.info(arr.length);
var obj = arr.pop(); //pop方法从数组尾部移除一个元素,返回当前移除的元素,数组长度-1
console.info(obj);
console.info(arr);
console.info(arr.length);

    shift、unshift

/**
 * shift 和 unshift方法
 * 修改数组自身
 */
var arr = [1, 2, 3, true, new Date()];
var r1 = arr.shift(); //shift方法从数组头部移除一个元素,返回当前移除的元素,数组长度-1
console.info(r1);
console.info(arr);
console.info(arr.length);
  
var r2 = arr.unshift(10, false); //unshift方法从数组头部追加元素,返回追加元素后的数组长度
console.info(r2);
console.info(arr);
console.info(arr.length);

    splice、slice

/**
 * splice、slice方法
 * splice方法操作数组本身,可在指定位置完成添加、修改、删除等操作
 * slice方法不操作数组本身,返回新的数组
 */
  
//splice()参数
//  第一个参数:起始位置
//  第二个参数:截取长度
//  第三个参数以后:表示追加的新元素
//  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
var arr = [1, 2, 3, 4, 5];
arr.splice(1, 2, 3, 4, 5); 
console.info(arr); //1, 3, 4, 5, 4, 5 
   
//slice() //返回截取的内容 截取的范围左闭右开
//  第一个参数:起始位置,包含
//  第二个参数:结束位置,不包含
var arr = [1, 2, 3, 4, 5];
var result = arr.slice(2, 4);
console.info(result);
console.info(arr);

    concat、join

//操作数组的方法: concat join
//concat 把两个数组合并为一个新数组,方法不操作数组本身,返回一个新的数组
var arr1 = [1, 2, 3];
var arr2 = [true, 4, 5];
var result = arr1.concat(arr2);
console.info(result);
console.info(arr1);
console.info(arr2); 
//join 把数组元素按指定分割符连接成一个字符串,方法不操作数组本身
var result = arr1.join("-");
console.info(arr1);
console.info(result);

    sort、reverse等

/**
 * sort排序
 * reverse倒序
 */
var arr1 = [5, 2, 1, 4, 3];
var arr2 = [10, 2, 4, 1, 7];
arr1.sort(); //sort()方法默认按照字符串方式比较
console.info(arr1); // [1, 2, 3, 4, 5]
arr1.reverse(); 
console.info(arr1); //[5, 4, 3, 2, 1]
arr2.sort();
console.info(arr2); //[1, 10, 2, 4, 7]
function compare(value1, value2){
    if(value1 < value2){
        return -1;
    } else if(value1 > value2){
        return 1;
    } else {
        return 0;
    }
}
arr2.sort(compare); //指定排序function
console.info(arr2); //[1, 2, 4, 7, 10]


© 著作权归作者所有

共有 人打赏支持
1217528969
粉丝 1
博文 27
码字总数 14810
作品 0
济南
16--swift之内存管理进阶

1.深拷贝与浅拷贝 值类型拷贝是一对一的拷贝,每个引用都有一个不同的对象,而引用型拷贝是多对一的拷贝,多个引用指向同一个对象,所以引用类型需要进行内存管理,而值类型不需要 //引用类型...

飞翔的小二哈 ⋅ 2016/03/13 ⋅ 0

引用类型对象拷贝

1. JavaScript引用类型有哪些?非引用类型有哪些? 引用类型: 对象、数组、函数、正则表达式,指保存在堆内存中的对象,变量中保存的实际上是一个指针,这个指针指向内存中的另一个位置,由...

熊蛋子17 ⋅ 2017/12/06 ⋅ 0

Java源代码阅读体会(1)-ArrayList

今天,觉得无所事事就抱着试一试的心态,看了一下Java的源代码,看的是比较简单的ArrayList部分。 同时,也让我清楚两个个东东区别add(i, E)和set(i, E)。 大家可能会笑,以前我以为这个两个...

Robinson_lu ⋅ 2012/11/09 ⋅ 0

一名前端工程师的自学之路!Js篇(11-22更新)

看到标题能进来的小伙伴,我也就不废话,先推荐一本必买的书《JavaScript高级程序与设计》。今天接着上一篇文章还是分享最基础入门的一些Js的知识。 1、构造函数 和对象 构造函数:可以通过n...

自律更自由 ⋅ 2017/11/22 ⋅ 0

GoLang笔记-数组和切片,本质是就是长度不可变的可变的区别

数组 Arrays 数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值。在初始化后长度是固定的,无法修改其长度。当作为方法的入参传入时将复制一份...

桃子红了呐 ⋅ 2017/11/15 ⋅ 0

JavaSE学习笔记系列:数组

数组可以看成是多个相同数据类型的数据集合,对这些数据的统一管理。 数组变量属于引用类型,可以看成是一个对象,数组中的每个元素可以看成是该对象的成员变量。 数组中的每个元素可以是任何...

landy8530 ⋅ 2017/12/19 ⋅ 0

Java中的内存分配

今天举例说一下Java中的堆和栈。 1、基本类型 int a = 1; 对于以上变量a,是在栈中存放的。 2、 对象 A a = new A(); 其中,引用a是在栈里存放的,对象A()是在堆里存放的。 3、数组 int[] a ...

亭子happy ⋅ 2014/04/08 ⋅ 0

深度解析Java内存的原型

本文主要通过分析Java内存分配的栈、堆以以及常量池详细的讲解了其的工作原理。 一、Java虚拟机内存原型 寄存器:我们在程序中无法控制栈:存放基本类型的数据和对象的引用,但对象本身不存放...

紫宸 ⋅ 2013/01/23 ⋅ 0

java虚拟机内存解析

一、java虚拟机内存原型 寄存器:我们在程序中无法控制栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中堆:存放用new产生的数据静态域:存放在对象中用static定...

lvzjane ⋅ 2012/12/25 ⋅ 0

关注C++细节——C++11新标准之decltype的使用注意

c++11新特性——decltype decltype是C++11添加的一个新的关键字,目的是选择并返回操作数的数据类型,重要的是,在此过程中编译器分析表达式并得到它的类型,却不实际计算表达式的值。 对于内...

iaccepted ⋅ 2014/05/31 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部