Javascript数组(1)--基本属性及方法
原文地址:http://www.cnblogs.com/hbzyin/p/7310716.html
数组Array是Javascript语言中非常重要的两种引用类型数据之一,另外一种为对象Object。Array的数据模型可分为两种进行存储:堆栈结构、队列结构。
昨天,确切说是前天了,去和大学同学见面,请了半天假,顺便去参加了一个面试,结果还不知道;先说说面试中的一些Javascript相关的基本知识。虽然平时工作中也经常用到各种数组相关的方法, 但理解不够深刻,总是容易遗忘,今天趁机再整理一下。
1.数组的基本属性:①length、②prototype、③constructor
- Array.length : 设置、返回数组中元素的数目;
- Array.prototype : 设置、返回数组中原型的属性/方法;
- Array.constructor: 返回次对象的数组函数的引用。
var arr1=new Array();
arr1.length=3; //// 1.1. 设置数组的长度
console.log(arr1); //[undefined × 3]
var arr2=[1,2,4]; //// 1.2.返回数组的长度
console.log(arr2.length);//3
Array.prototype.attrName="new attribute"; //// 2.1 设置数组原型的属性
console.log(Array.attrName);//new attribute;
Array.prototype.newFn=function(){ //// 2.2设置数组原型的方法
return "This is a new fn of Array.prptotype.";
}
console.log(Array.newFn()); // This is a new fn of Array.prptotype.
Array.constructor.newFunction(); ////返回创建次对象的数组函数;
2. 数组堆栈FILO模型下方法:①push(el) 、②pop()
这两种方法都会导致原数组产生变化,返回值为完成操作之后的数据;
var arr3=['a','b','c'];
arr3.push('d'); // 2.1 堆栈中从**堆栈顶部**添加一个元素--改变原数组
console.log(arr3);//["a","b","c","d"]
arr3.pop(1) // 2.2 从堆栈顶部删除数组的最后一个元素--改变原数组
consoel.log(arr3);//["a","b","c"]
3.数组队列模型FIFO下的方法:①push(el)、②shift()、③unshift(el)
var arr4=["d","e","f"];
arr4.push("g"); //// 3.1 在队列末尾添加一个元素--改变原数组
console.log(arr4);//["d","e","f","g"]
arr4.shift(1); //// 3.2 在队列头部删除一个元素--改变原数组
console.log(arr4);//["e","f","g"]
arr4.unshift("dd"); //// 3.3 在队列头部添加一个元素--改变原数组
console.log(arr4);//["dd","e","f","g"]
4. 数组的排序方法:①sort()、②reverse()
这里需要说明几点:
1. sort方法默认按照圣墟对数组进行排序,即 由小到大升序;
2. sort方法会隐式调用每个数组项的toString()方法,然后比较得到的字符串,最后进行升序排列;如:[0,1,3,10,15].sort();//[0,1,10,15,3]
;
3. sort方法可传入一个用于比较函数,实际使用中常自定义比较函数function(a,b){return a-b;}
,若 a-b<0 升序排列;若a-b>0降序排列;a-b=0 原数组不变;
4. reverse方法--其排序方向为 降序排列数组、与sort方向相反;
var arr=[12,13,25,24,27];
arr.sort(); //// 4.1 sort() 默认升序排列
console.log(arr); //[12,13,24,25,27]
arr.reverse(); //// 4.2 reverse() 翻转排序
console.log(arr); //[27,25,24,13,12]
var arr=[1,5,13,20,25];
arr.sort(); //// 4.3 sort() 隐式调用toString() 方法后对元素进行比较排序
console.log(arr); //[1,13,20,25,5]
arr.sort(function(a,b){ //// 4.4 sort(function(a,b){return fn}) 自定义比较函数
return a-b;
});
console.log(arr); //[1,5,13,20,25]
5. 数组位置方法: ①indexOf(el)、②lastIndexOf(el)
**说明:**此处说明一点,数组位置查找时,采用全等(===)比较进行查找
var arr=["jack","lily","lucy","lily","brown","json"];
var index1=arr.indexOf("lily"); //// 5.1 从头(序号0)开始查找元素
var index2=arr.lastIndexOf("lily"); //// 5.2 从尾部(序号1)开始查找元素
var index3=arr.indexOf("xiaoming");
console.log(index1); // 1
console.log(index2); // 3
console.log(index3); // -1
6. 数组操作方法:
- 数组合并:①concat()、②join()
var arr5=["a","b","c"];
var arr6=[1,2,3];
var res=arr5.concat(arr6); //// 6.1.1 concat 合并两个数组
console.log(arr5);//["a","b","c"]
console.log(arr6);//[1,2,3]
console.log(res);//["a","b","c",1,2,3]
var res6=[...arr5,...arr6]; //// ES6解构方法合并数组
var res2=arr5.join("-"); //// 6.1.2 join 连接数组元素为字符串
console.log(arr5);//["a","b","c"]
console.log(res2);//a-b-c
- 数组复制(切分):①slice(st[,end])
关于arr.slice(start,end)方法此处说明几点:
1. arr.slice(start,end) : 可传入一个或者两个参数,start 复制数组的起始位置,end数组复制结束的位置;
2. arr.slice(start,end) : 若传入参数start>end,表示数组不进行复制,返回空数组;
3. arr.slice(start,end) : 若传入参数start、end任意一个为负值,则实际复制时改参数值为 argValue=arr.length+该传入值,再进行复制
var arr=[0,1,2,3,4,5,6];
var arr1=arr.slice(1); // 6.2.1 从指定开始位置复制数组
var arr2=arr.slice(1,3); // 6.2.2 从指定的开始、结束位置复制数组
var arr3=arr.slice(-2,2); // 6.2.3 从指定位置(start+arr.length)和结束位置复制数组
- 全能方法:splice()
关于arr.splice()说明一下几点:
1. arr.splice(arguments)--进行操作时会对原数组造成影响;
2. 可用作数组的删除、插入、替换三类操作;其传入参数有 2个、3个、4个
3. arr.splice(start,num)--从指定位置(start)开始,删除指定个数(num)数组元素;
4. arr.splice(start,DeleteNum,newEl1)--从指定位置(start),删除指定个数元素,并在指定位置(start)插入新元素;
5. arr.splice(start,DeleteNum,newEl1)--在指定位置(start+DeletenNum)用新元素(newEl)替换旧元素;
var names=["lily","lucy","jhon","schwts"];
var name1=names.splice(1,1); //// 6.3.1 从指定位置(start),去删除(num)个数组元素
console.log(name1); // ["lucy"];
console.log(names); // ["lily","jhon","schwts"] // splice()方法会对原数组造成影响
var name2=names.splice(1,1,...["xiaoming"]); //// 6.3.3 从指定位置插入元素
console.log(name1); // ["lucy"];
console.log(names); // ["lily","jhon","schwts"]
var names=[1,2,3,4,5,6];
var name=names.splice(2,2,5);
console.log(name); // 1,2,5,5,6;
console.log(names);
__END
Javascript数组(1)--基本属性及方法的更多相关文章
- javascript数组常用的遍历方法
本篇文章给大家带来的内容是关于javascript数组常用的遍历方法(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 本文主要介绍数组常见遍历方法:forEach.m ...
- JavaScript 数组(Array)对象的方法
JavaScript 数组(Array)对象的方法 concat() 描述:用于连接两个或多个数组.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 原型:arrayObject.conc ...
- JavaScript数组的22种方法
原文:http://www.cnblogs.com/xiaohuochai/p/5682621.html javascript中数组的22种方法 前面的话 数组总共有22种方法,本文将其分为对象继 ...
- javascript数组的属性、方法和清空-最全!!!(必看)
今天经理要我从新看一遍js,当我再看<精通js和jquery>这本书时,发现关于数组的这章节讲的很少,于是想自己总结一下数组的常用方法. 定义数组: var arr = new Array ...
- Javascript数组Array的forEach方法
Javascript数组Array的forEach扩展方法 forEach是最常用到的数组扩展方法之一,相当于参数化循环数组,它简单的在数组的每一个元素上应用传入的函数,这也意味着只有存在的元素会被访 ...
- 合并JavaScript数组的N种方法
这是一篇简单的文章,关于JavaScript数组使用的一些技巧.我们将使用不同的方法结合/合并两个JS数组,以及讨论每个方法的优点/缺点. 让我们先考虑下面这情况: var a = [ 1, 2, 3 ...
- <JavaScript>数组的sort()方法中比较函数是怎么工作的
sort()函数比较时调用的是每个数组项的toString()方法,并非按数值大小进行比较,所以往往得不到我们想要的结果. 比如: ,,,,]; values.sort( ); alert(value ...
- JavaScript 数组中的 indexOf 方法
let arr = ['orange', '2016', '2016']; arr.indexOf('orange'); //0 arr.indexOf('o'); //-1 arr.indexOf( ...
- 遍历Javascript数组的一种方法!
应用场景: 如果您的数组只用一次的话就适用这种方法,因为遍历完后数组便清空了.代码如下: var arr=[1,5,6,2,3]; for(;i=arr.shift();){ console.log( ...
随机推荐
- vmware提示:此虚拟机似乎正在使用中,取得该虚拟机的所有权失败错误
用vm的时候,没有挂起和关闭虚拟机,直接关实体机.然后不幸的就异常了. 启动提示:此虚拟机似乎正在使用中.如果此虚拟机已在使用中,请按"取消"按钮,以免损坏它.如果此虚拟机未使用, ...
- workerman启动失败解决
提示stream_socket_server(): unable to connect to tcp://0.0.0.0:2120 (Address already in use)php xxx.ph ...
- Swift自增和自增运算
自增和自增运算 和 C 语言一样,Swift 也提供了方便对变量本身加1或减1的自增(++)和自减(--)的运算符.其操作对象可以是整形和浮点型. var i = ++i // 现在 i = 1 ...
- linux下如何解压和压缩文件
1.*.tar 用 tar –xvf 解压 2.*.gz 用 gzip -d或者gunzip 解压 3.*.tar.gz和*.tgz 用 tar –xzf 解压 4.*.bz2 用 bzip2 -d或 ...
- 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 前台页面
首先来看一下我已经实现的效果图: 消费者页面:(本篇随笔) (1)会显示店主的头像 (2)当前用户发送信息显示在右侧,接受的信息,显示在左侧 店主或客服页面:(下一篇随笔) (1)在左侧有一个列表 , ...
- 一个Ruby静态代码分析器 rubocop
A Ruby static code analyzer, based on the community Ruby style guide. http://rubocop.readthedocs.io ...
- 全网首创ISE入门级教程
转眼间我已经大三了,现在成为了实验室的负责人,对于下一届学生的纳新重任就交到了我的手上,想采取不同的方法暑假尽可能对他们进行一些培训,所以制作了此教程,说实话,在网上还没有找到关于ISE的入门级使用教 ...
- Longest Palindromic Substring - 字符串中最长的回文字段
需求:Given a string S, find the longest palindromic substring in S. You may assume that the maximum le ...
- Codeforces_617E: XOR and Favorite Number(莫队算法)
题目链接 题意大致是说,给出一个长为n(n<=1e5)的数组,给定一个k(k<=1e6),给出m(m<=1e5)个询问,每组询问中回答 从a_l到a_r有多少个连续的子序列满足异或和 ...
- spring mvc3 静态文件放在WEB-INF下无法访问解决和解决@Controller失效问题
今天整合spring+mybatis+easyui碰到的问题 将easyui放在WEB-INF下后无法访问, 解决:需配置<mvc:resources mapping="/easyui ...