js 数组知识复习
2.Array类型
2.1 创建数组
两种方式:
1.new Array();
//创建一个空数组
var arr1 = new Array();
//创建一个长度为10的空数组,
var arr2 = new Array(10);
//创建一个包含一个字符串good的数组
var arr3 = new Array("good");
特别说明:当传进去括号中的只有一个值,这个值是数值的话,就会创建长度为这个数值的数组;如果是其他值,那就是包含一个这个值的数组。
2.数组字面量,使用方括号:
// 创建空的
var fish = [];
//创建有值的,在括号里添加
var cars = ["BMW","BenZ","Ferrari"];
//注意,创建数组不要留空项。浏览器兼容性问题,IE8或以前版本会认为这是有3项,下面这种不建议。
var nums = [1,2,];
2.2 访问数组中的值
和其他语言一样下标访问(下标从0开始):
//创建数组
var cars = ["BMW","BenZ","Ferrari"];
console.log(cars[0]); //BMW
console.log(cars[2]); //Ferrari
//修改数组某个值,对其重新赋值就像
cars[0] = "lala";
2.3 常用属性和方法
这里给出常用的属性和方法,更详细的在js的文档里面有。
1.length属性:返回数组的长度。
var num = [1,2,3,4,5]
console.log(arr.length); //5
//妙用:通过改变数组的length可以改变数组长度
arr.length = 10; //现在num 数组长度为10了
console.log(num); //[1,2,3,4,5,,,,,] 后面5个值是空的
2.Array.isArray()方法:判断对象是不是数组
//用了判断改对象是不是数组
var arr = [];
console.log(Array.isArray(arr)); //true
console.log(Array.isArray("s"); //false
3.join()方法:改变数组分隔方式,返回新的分隔符字符串
//原来是使用逗号连接的
var arr = [1,2,3,4,5];
//用|连接,注意只是返回字符串,不会改变数组里面的连接方式
console.log((arr.join("|")); //'1|2|3|4|5'
console.log(arr); //[1,2,3,4,5] 还是一样用逗号的
4.栈方法:pop()和push()组合使用实现栈的先进后出
//引入这两方法是为了用数组实现栈的功能
//push() :从数组最后添加数据
var stack = new Array();
//添加一个10
stack.push(10);
//添加一个5
stack.push(5);
//添加一个100
stack.push(100);
//现在stack中有3个数值
console.log(stack); //[10,5,100]
//pop() :从数组最后删除并返回该数据
stack.pop(); //100 100被删除
console.log(stack); //[10,5] 剩下两数
5.队列方法:shift()和push()组合使用实现先进先出
这里就不再举例了,类似与栈的操作,只是操作的函数不同,栈的pop是从后面删除,而队列的shift是从前面删除,这样就先进先出了。
6.重排序方法:sort()和reverse()
//sort()默认是按照ascii码表排序的,所以会出现下面这种情况
var arr = [5,12,18,1];
console.log(arr.sort()); //[1,12,18,5]
//为了可以对数字正常排序,为sort传入一个比较函数
function comp(a,b){
return a-b;
}
//再来排序
arr.sort(comp);
console.log(arr); //[1,5,12,18] 这次正确了
//reverse()是将数组完全颠倒
arr.reverse();
console.log(arr); //[18,12,5,1]
7.合并和剪切:concat() , slice()
//1.concat() 在该数组的基础上添加元素,返回一个新数组(不会改变原数组)
var arr1 = [1,2,3];
//在arr1基础添加4,5,6,并返回给arr2,不会改变arr
var arr2 = arr1.concat(4,5,6);
console.log(arr2); //[1,2,3,4,5,6]
//2.slice() 通过传入开始和终点值来剪切数组,并返回新数组
var arr3 = arr2.slice(1,5);
console.log(arr3); //[2,3,4,5]
8.最强大的数组方法:splice()
删除:接受两个参数,第一个是开始删除位置,第二个是删除的个数,返回一个删除项的数组
//用来删除
var arr = [1,2,3,4,5,6,7];
var del_arr = arr.splice(0,4); //从0位开始删除4项,即前4项
console.log(del_arr); //[1,2,3,4]
console.log(arr); //[5,6,7] arr数组剩下后面3项了
插入:输入3个参数,起始位置,0(删除项数设为0),要插入的值
//用来插入
var arr1 = [1,2,3,4,5,6];
arr1.splice(3,0,100);//从位置3插入一个100值
console.log(arr1); //[1,2,3,100,4,5,6];
替换:指定3个参数,起始位置,要删除的项,插入的值
//替换
var arr2 = [1,2,3,4,5];
//我要替换3,替换成100
arr2.splice(2,1,100); //起始位是2,删除1项(就是3了),载插入100,ok
console.log(arr2); //[1,2,100,4,5]
9.位置函数:indexOf()和lastIndexOf():这两个方法用来找数值下标位置。都接受两个参数,第一个是要找的值,第二个是开始位置
//indexOf() 只传一个参数时默认从0开始找数值,找到返回这个数的数组位置,没有返回-1
var arr = [100,12,123,1234];
console.log(arr.indexOf(123)); //2 数组的位置2
//lastIndexOf() 和indexOf查找顺序正好相反,它从数组末尾开始找起
console.log(arr.lastIndexOf(100)); //0
10.forEach()方法,对每一项进行处理
//接受一个函数,函数传入2个参数表示当前数值和其下标位置
var arr = [1,2,3,4,5];
arr.forEach(function(item, index){
console.log(item + 1);
}
//输出 2,3,4,5,6 每一项都加1了
转http://www.cnblogs.com/Ry-yuan/p/7688322.html 感谢原作者
js 数组知识复习的更多相关文章
- js数组知识
js数组 shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3, ...
- 数组知识总结(js)
js数组知识注意点: 声明空数组时,和c语言中的不同 js c var arr=[ ] //合法,声明一个空数组,数组长度为0; int a[];//错误因为在c中声明一个数组不仅要指定类型还要指定数 ...
- 前端知识复习: JS选中变色
前端知识复习:JS选中变色 上篇文章 :前端知识复习:Html DIV 图文混排(文字放在图片下边) Js选中图片效果 <!DOCTYPE html> <html xmlns=&qu ...
- [JS复习] JS 基础知识
项目结尾,空闲时间,又把<JS 基础知识> 这本书过了一遍,温故知新后,很多知其然不知其所以然的内容 豁然开朗. [1. 用于范围的标签] display :inline or bloc ...
- JS 数组的基础知识
数组 一.定义 1.数组的文字定义 广义上说,数组是相同类型数据的集合.但是对于强类型语言和弱类型语言来说其特点是不一样的.强类型语言数组和集合有以下特点. 数组强类型语言:1.数组里面只能存放相同数 ...
- js数组相关知识集合
一.js数组快速排序 <script type="text/javascript"> var arr = [1, 2, 3, 54, 22, 1, 2, 3]; fun ...
- 笔记——js 数组
JS阅读笔记--数组[Array] 最近在看zepto源码,里面用到了很多基础知识,借此机会又把基础知识复习和整理了一遍,算是温故而知新吧.先从引用类型Array写起吧 1. length属性 代码: ...
- js数组去重方法分析与总结
数组去重经常被人拿来说事,虽然在工作中不常用,但他能够很好的考察js基础知识掌握的深度和广度,下面从js的不同阶段总结一下去重的方法. ES3阶段 该阶段主要通过循环遍历数组从而达到去重的目的 多次循 ...
- 理清JS数组、json、js对象的区别与联系
最近在敲代码时,遇上了一个关于JS数组的问题,由此引发了关于对象和json的联想,曾经觉得很畅顺的知识点突然模糊了.于是,为了理清这些东西,有了如下这篇文章.觉得没问题的猿们可以当复习,而那些带着疑问 ...
随机推荐
- 【Django】Django中的模糊查询以及Q对象的简单使用
Django中的模糊查询: 需要做一个查找的功能,所以需要使用到模糊查询. 使用方法是:字段名加上双下划线跟上contains或者icontains,icontains和contains表示是否区分大 ...
- 最新Python3.6从入门到高级进阶实战视频教程
点击了解更多Python课程>>> 最新Python3.6从入门到高级进阶实战视频教程 第1篇 Python入门导学 第2篇 Python环境装置 第3篇 了解什么是写代码与Pyth ...
- 绘制文字:imagettftext()
<?php //1. 绘制图像资源(创建一个画布) $image = imagecreatetruecolor(500, 300); //2. 先分配一个绿色 $green = imagecol ...
- 读书笔记3(Teamwork)
今天我阅读了<构建之法>的第四章——两人合作,它主要讲述了在两人合作进行项目时与单人作业时的区别与不同,其中最重要的就是代码规范.代码规范:我们写的代码虽然是电脑运行,但是最终还是给人看的 ...
- 并查集:HDU1213-How Many Tables(并查集最简单的应用)
How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...
- 快速排序,对于相同元素的优化,c++
#include<iostream>using namespace std; void middl(int &p,int &q,int &r)//找枢轴,然后把枢轴 ...
- 如何看待微软新开源的LightGBM?
GBDT虽然是个强力的模型,但却有着一个致命的缺陷,不能用类似mini batch的方式来训练,需要对数据进行无数次的遍历.如果想要速度,就需要把数据都预加载在内存中,但这样数据就会受限于内存的大小: ...
- 关于tree节点的刷新
1.刷新节点分为刷新整个树和刷新指定节点 (1)刷新整个树 $("#tree").tree("reload"); (2)刷新指定节点(方法:传入需要刷新节点的父 ...
- 初学Linux 命令
查看ip:ifconfig 切换用户:us root(root为用户名) 显示当前目录:pwd 列出当前目录下所有文件:ls 进入某个目录 :cd 创建一个文件夹:mkdir 创建多个目录(当没有该父 ...
- Codeforces Round #418 (Div. 2) A+B+C!
终判才知道自己失了智.本场据说是chinese专场,可是请允许我吐槽一下题意! A. An abandoned sentiment from past shabi贪心手残for循环边界写错了竟然还过了 ...