sfruit = new Array();
sfruit.push("red");
sfruit.push("green");
sfruit.push("oragen");
sfruit.push("blue");
document.write(sfruit.length + sfruit.toString()+"<br>");
var wfruit = sfruit.pop();
document.write(wfruit+"<br>")
document.write(sfruit.toString())
如上,javascript将数组看成了一个堆栈,通过push()和pop()进行压栈和出栈处理。
您可能感兴趣的文章:- javascript引用类型之时间Date和数组Array
- javascript学习笔记(五) Array 数组类型介绍
- Javascript isArray 数组类型检测函数
- Javascript如何判断数据类型和数组类型
- js使用Array.prototype.sort()对数组对象排序的方法
- JavaScript数组Array对象增加和删除元素方法总结
- 浅析JavaScript中的array数组类型系统

JavaScript之数组Array
数组,在c、Java语言里面是一种数据结构,但是在JavaScript里面是一个对象,主要目的是用一个变量来存储多个值。在一些语言里面,数组只能存储一类数据,但是在JavaScript里,没这限制,当然一个数组里面存储多种数据类型的数据好不好就看自己怎么用了。
声明一个数组,有两种方法:1、var arr=new Array(); 2、var arr=[].很多大牛推荐用第2种方法来初始话数据,据说这样性能更好。
当然在声明数组的时候,我们还能做点其他的事情。如var arr=new Array(5);声明一个数组,并且这个数组的长度为5,和其他语言不同的是,我们可以给这个数组添加超过5个元素,而且这个数组长度可以自动增长。又如var arr=new Array(1,2,3);声明一个数组,并且给这个数组添加三个元素,分别为1,2,3 。又如 var arr=[1,2,3];声明一个数组,并且给这个数组添加三个元素,分别为1,2,3 。这就好比是我们在声明一个变量一样,声明并初始化一个变量。
下面介绍一些数组的方法:
concat() : 用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。如:var a0=[0,1],a1=[1,2],a2=[2,3],a3=[3,4];var arr=a0.concat(a1,a2,a3);可以得到arr=[0, 1, 1, 2, 2, 3, 3, 4].concat的参数可以不是数组,如var arr=a0.concat(a1,a2,a3,5,6,7);可以得到arr=[0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 7].返回一个新的数组。
every() : 用于检测数组所有元素是否都符合指定条件(通过函数提供)。方法使用指定函数检测数组中的所有元素:如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测;如果所有元素都满足条件,则返回 true。 every() 不会对空数组进行检测,不会改变原始数组。ie8及以下的浏览器不支持此方法。如:
var ages = [32, 33, 16, 40];
function checkAdult(age,index,arr) {
console.log(''age:''+age+'',index:''+index+'',arr:''+arr);
console.log(''this:''+this);
return age >= 18;
}
function myFunction() {
var flag = ages.every(checkAdult,ages);
console.log(''flag:''+flag);
}
every的语法:array.every(function(currentValue,index,arr), thisValue)。currentValue(必须,当前元素的值),index(可选,当前元素的索引值),arr(可选,当前元素属于的数组对象),thisValue(可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined")。返回值为true或者false。
filter() : 该方法会创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。该方法不会对空数组进行检测,不会改变原始数组。ie8及以下的浏览器不支持此方法。 filter的语法:array.filter(function(currentValue,index,arr),thisValue) ;currentValue(必须,当前元素的值),index(可选,当前元素的索引值),arr(可选,当前元素属于的数组对象),thisValue(可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined")。返回值为符合条件的元素组成的数组。如:
var ages = [32, 33, 16, 40];
function filterAdult(age,index,arr) {
console.log(''age:''+age+'',index:''+index+'',arr:''+arr);
console.log(''this:''+this);
return age >= 18;
}
function myFunction() {
var flag = ages.filter(filterAdult,ages);
console.log(''flag:''+flag);
}
indexOf() : 该方法可返回某个指定的元素在数组中首次出现的位置。该方法将从头到尾地检索数组,看它是否含有检索的元素 。开始检索的位置在数组的 fromindex 处或数组的开头(没有指定 fromindex 时)。如果找到一个元素,则返回元素的第一次出现的位置。数组中的字符位置是从 0 开始的。如果在数组中没找到字符串则返回 -1。ie8及以下的浏览器不支持此方法。 indexOf 的语法:array.indexOf(item,start) ;item(必须,查找的元素),start(可选的整数参数。规定在数组中开始查找的位置。它的合法取值是 0 到 array.length - 1。如省略该参数,则将从数组的首个元素开始查找。)。返回值为元素在数组中的位置,如果没与搜索到则返回 -1。如:
var fruits = ["Banana", "Orange", "Apple", "Mango", "Apple"];
fruits.indexOf("Apple");
fruits.indexOf("Appl");
lastIndexOf() : 该方法可返回一个指定的元素在数组中最后出现的位置,在一个在数组中的指定位置从后向前搜索。如果要检索的字符串值没有出现,则该方法返回 -1。该方法将从尾到头地检索数组,看它是否含有检索的元素。开始检索的位置在数组的 fromindex 处或数组的结尾(没有指定 fromindex 时)。如果找到一个元素,则返回找到的元素在数组中的位置。ie8及以下的浏览器不支持此方法。lastIndexOf 的语法:array.lastIndexOf(item,start) ;item(必须,查找的元素),start(可选的整数参数。规定在数组中从最后面开始查找的位置。它的合法取值是 0 到 array.length - 1。如省略该参数,则将从数组的最后一个元素开始查找。)。返回值为元素在数组中的位置,如果没与搜索到则返回 -1。如:
var fruits = ["Banana", "Orange", "Apple", "Mango", "Apple"];
fruits.lastIndexOf("Apple");
fruits.lastIndexOf("Appl");
join() : 该方法用于把数组中的所有元素转换一个字符串,元素是通过指定的分隔符进行分隔的。返回值为一个字符串。该字符串是通过把数组的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入分隔符而生成的。 join 的语法:array.join(separator); separator(可选,指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。)。如:
var fruits = ["Banana", "Orange", "Apple", "Mango", "Apple"];
fruits.join();
fruits.join('''');
map() : 该方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。该方法按照原始数组元素顺序依次处理元素。该方法不会对空数组进行检测,不会改变原始数组。ie8及以下的浏览器不支持此方法。map 的语法:array.map(function(currentValue,index,arr), thisValue) ;currentValue(必须,当前元素的值),index(可选,当前元素的索引值),arr(可选,当前元素属于的数组对象),thisValue(可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined")。如:
var ages = [32, 33, 16, 40];
function mapAdult(age,index,arr) {
console.log(''age:''+age+'',index:''+index+'',arr:''+arr);
console.log(''this:''+this);
return age-18;
}
function myFunction() {
var flag = ages.map(mapAdult,ages);
console.log(''flag:''+flag);
}
pop() : 该方法用于删除数组的最后一个元素并返回删除的元素。pop 的语法:array.pop() 。如:
var ages = [32, 33, 16, 40];
ages.pop();
push() : 该方法可向数组的末尾添加一个或多个元素,并返回新的长度。push 的语法:array.push(item1, item2, ..., itemX) ;item1, item2, ..., itemX(必须,要添加到数组的元素)。如:
var fruits = ["Banana", "Orange", "Apple", "Mango", "Apple"];
fruits.push("Banana","Orange");
fruits.push(["Banana","Orange"]);
shift() : 该方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。shift 的语法:array.shift()。如:
var ages = [32, 33, 16, 40];
ages.shift();
unshift() : 该方法可向数组的开头添加一个或更多元素,并返回新的长度。ie8及以下的浏览器不支持此方法。unshift 的语法:array.unshift(item1,item2, ..., itemX) ; item1,item2, ..., itemX(必须,要添加到数组的元素)。如:
var fruits = ["Banana", "Orange", "Apple", "Mango", "Apple"];
fruits.unshift("Banana","Orange");
fruits.unshift(["Banana","Orange"]);
reverse() : 该方法用于颠倒数组中元素的顺序。返回新的数组。reverse 的语法:array.reverse() 。如:
var fruits = ["Banana", "Orange", "Apple", "Mango", "Apple"];
fruits.reverse();
slice() : 该方法可从已有的数组中返回选定的元素。该方法不会改变原始数组,返回一个数组。 slice 的语法:array.slice(start, end) ; start(必需,规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。),end(可选,规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。) 。如:
var fruits = ["Banana", "Orange", "Apple", "Mango", "Apple"];
fruits.slice(1,2);//["Banana"]
fruits.slice(1,1);//返回一个空数组
fruits.slice(1,-5);//["Banana", "Orange"]
fruits.slice(-1);//["Apple"]
splice() : 该方法用于插入、删除或替换数组的元素。该方法会改变原始数组。返回一个数组,如果从原数组中删除了元素,则返回的是含有被删除的元素的数组,否则返回空数组。splice 的语法:array.splice(index,howmany,item1,.....,itemX) ;index(必需,规定从何处添加/删除元素。
该参数是开始插入和(或)删除的数组元素的下标,必须是数字。),howmany(必需,规定应该删除多少元素。必须是数字,但可以是 "0"。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。),item1,.....,itemX(可选,要添加到数组的新元素)。如:
var fruits = ["Banana", "Orange", "Apple", "Mango", "Apple"];
fruits.splice(1,0,''test'');//[]
fruits.splice(1,2,''test'');//["test", "Orange"]
some() : 该方法用于检测数组中的元素是否满足指定条件(函数提供)。该方法会依次执行数组的每个元素,如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测;如果没有满足条件的元素,则返回false。该方法不会对空数组进行检测,不会改变原始数组。ie8及以下的浏览器不支持此方法。some 的语法:array.some(function(currentValue,index,arr),thisValue) ;currentValue(必须,当前元素的值),index(可选,当前元素的索引值),arr(可选,当前元素属于的数组对象),thisValue(可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined")。如:
var ages = [32, 33, 16, 40];
function someAdult(age,index,arr) {
console.log(''age:''+age+'',index:''+index+'',arr:''+arr);
console.log(''this:''+this);
return age>18;
}
function myFunction() {
var flag = ages.some(someAdult,ages);
console.log(''flag:''+flag);
}
sort() : 该方法用于对数组的元素进行排序。该方法会改变原始数组。排序顺序可以是字母或数字,并按升序或降序,默认排序顺序为按字母升序。当数字是按字母顺序排列时"40"将排在"5"前面,使用数字排序,你必须通过一个函数作为参数来调用,函数指定数字是按照升序还是降序排列。返回排序后的数组。sort 的语法:array.sort(sortfunction);sortfunction(可选,规定排序顺序。必须是函数。)。如:
var ages = [32, 33, 16, 40];
ages.sort(riseFunc);
//升序
function riseFunc(l,r){
return l-r;
}
//降序
function downFunc(l,r){
return r-l;
}
toString() : 该方法可把数组转换为字符串,并返回结果。数组中的元素之间用逗号分隔。toString的语法:array.toString() 。如:
var ages = [32, 33, 16, 40];
ages.toString();//"32,33,16,40"
valueOf() : 该方法返回 Array 对象的原始值。该原始值由 Array 对象派生的所有对象继承。valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。valueOf() 方法不会改变原数组。valueOf 的语法:array.valueOf() 。如:
var ages = [32, 33, 16, 40];
ages.valueOf();
遍历数组:遍历数组最常用的方法是使用for循环,如:
var arr=[0, 1, 2, 3, 1, 2, 3, 4, 5, 6, 7];
for(var i=0;i<arr.length;i++){
console.log(arr[i]);
}
有人说数组这里的arr.length应该用一个变量缓存起来,这样速度更快,个人觉得没这必要,数组的length是他的属性,当你改变数组的时候,js会自动维护这个属性,所以你每次使用arr.length的时候其实并没有去计算数组的长度。 再有就是for...in,但是for...in在某些浏览器上存在兼容性问题,而且性能上也比for循环差不少,所以比较少用,在遍历对象的时候倒是用的不少。 还有就是forEach,IE8及以下的浏览器不支持,如:
var arr=[0, 1, 2, 3, 1, 2, 3, 4, 5, 6, 7];
arr.forEach(function(element, index, array){
console.log(''element:''+element+'',index:''+index+'',array:''+array)
});
判断是否是数组:
function isArray(obj) {
return Object.prototype.toString.call(obj) === ''[object Array]'';
}

Javascript基础之Array数组API
Javascript数组原型提供的方法非常之多,主要分为三种:
直接修改原数组的API
pop()
删除一个数组中的最后的一个元素,并且返回这个元素
push()
添加一个或者多个元素到数组末尾,并且返回数组新的长度
shift()
删除数组的第一个元素,并返回这个元素
unshift()
在数组开始处插入一些元素,并返回数组新的长度
splice()
从数组中添加/删除一些元素,然后返回被删除的元素
reverse()
颠倒数组中元素的顺序
sort()
用于对数组的元素进行排序
fill()
-- ES6新增
将数组指定区间内的元素替换为某个值
copyWithin()
-- ES6新增
数组内元素之间的替换
返回新数组的API
contact()
将传入的数组或者元素与原数组合并,组成一个新的数组并返回
slice()
连接两个或多个数组
join()
将数组中的所有元素连接成一个字符串
indexOf()
用于查找元素在数组中第一次出现时的索引,如果没有,则返回-1
lastIndexOf()
用于查找元素在数组中最后一次出现时的索引,如果没有,则返回-1
includes()
-- ES7新增
用来判断当前数组是否包含某个指定的值,如果是,则返回 true,否则返回false
数组遍历方法
针对数组遍历方法,从
三个方面来讨论
forEach()
指定数组的每项元素都执行一次传入的函数,返回值为undefined
let arr=[1,2,3,4];
arr.forEach(function(value,key,arr){ //值,索引,数组(默认为选定数组)
return item; //进行任何操作
}) //只返回undefined
无return
返回 undefined
;
有return
:
- 仅有
return
:返回undefined
; return false
:返回undefined
;相当于 break
;return true
:返回undefined
;相当于 continue
;
简言之,仅返回undefined;
总结:
- 不会影响原数组
- 不会被中断
- 仅返回
undefined
map()
遍历数组,使用传入函数处理每个元素,并返回函数的返回值组成的新数组
无return
返回由 undefined
组成的数组,数组个数与原数组个数相同;
有return
return
表达式,返回有响应表达式 组成的数组
简言之,返回值,必定是一个与原数组个数相等的数组;但是数组中的值,根据所做的处理有所不同;
总结:
- 不会影响原数组
- 不能被中断
- 返回值,必定是一个与原数组个数相等的数组;但是数组中的值,根据所做的处理有所不同
filter()
使用传入的函数测试所有元素,并返回所有通过测试的元素组成的新数组
没有return
,返回值为空数组;
有return
:
- 仅有
return
,返回空数组; return false
,返回空数组;return true
,返回原数组;(是深拷贝还是浅拷贝)return
其余表达式,如果有判断条件,返回相应判断条件构成的数组;没有判断条件,返回原数组;
简言之,返回值,要么为空数组,要么为原数组,要么为原数组部分元素组成的数组;
总结:
- 不会影响原数组
- 不能被中断
- 返回值,要么为空数组,要么为原数组,要么为原数组部分元素组成的数组
every()
使用传入的函数测试所有元素,每一个元素经传入的函数处理都返回true
该方法才返回true
,否则返回false
(验证是否每一个元素都满足测试函数)
验证是否有元素都满足测试函数,eg: return (element >= 10)
无return:返回false;
有return
:
- 仅有
return
:返回false
; return false
:返回false
;return true
:返回true
;
简言之,只返回 true
或者 false
总结:
- 不会影响原数组
- 不能被中断
- 只返回
true
或者 false
some()
使用传入的函数测试所有元素,只要有一个元素经传入的函数处理返回true
该方法就返回true
,否则返回false
(验证是否有元素都满足测试函数)
无return
,返回 false
有return
:
- 仅有
return
,返回false
; return false
,返回false
;return true
,返回 true
;并且后续被中断
简言之,仅返回true
、或者false
总结:
- 不会影响原数组
return true
,可以被中断- 仅返回
true
、或者false
注意:
虽然只有return true
才会中断循环;但是其余情况下,不会再去执行return false
后面的代码了;
find()
-- ES6新增
返回数组中第一个满足条件的元素(如果有的话), 如果没有,则返回 undefined
无return
:返回undefined
有return
:
- 仅有
return
:返回undefined
; return false
:返回undefined;return true
:返回相应的索引值,并且中断
总结:
- 不会影响原数组
return true
中断循环- 返回
undefined
或者 相应索引值
findIndex()
-- ES6新增
返回数组中第一个满足条件的元素的索引(如果有的话), 如果没有,则返回 -1
keys()
-- ES6新增
返回一个数组索引的迭代器
values()
-- ES6新增
返回一个数组迭代器对象,该对象包含数组中每个索引的值
entries()
-- ES6新增
返回一个数组迭代器对象,该对象包含数组中每个索引的键值对
reduce()
接收一个方法作为累加器,数组中的每个值(从左至右) 开始合并,最终为一个值
reduceRight()
接收一个方法作为累加器,数组中的每个值(从右至左) 开始合并,最终为一个值
最终总结下,对于数组遍历方法,forEach
map
filter
every
some
find
,六个方法,都不会改变原数组
,只有some
find
可中途跳出循环,返回结果看上述分析;

javaScript基础教程day01
6.代码的执行过程
从上到下,从左到右
7.注释
Ctrl+shift+D 复制代码
Ctrl +/ //------单行注释
/**/------多行注释
8.开发人员工具的使用
右键-审查元素-打开开发人员工具
Console.log();
promopt(“请输入您的银行密码:”)
11.直接量和变量![]()
12.字符串 String![]()
字符串的转译:
a. 如果字符串中有双引号,可以将字符串的引号改变为单引号。
b. 可以使用转译字符\’单引号,\”双引号,\t缩进,\n换行
13.数值类型 Number
NaN:not a number![]()
NaN![]()
整数,小数 123,1,0,-1.2
特点:表达的是一种数据的量
a.+加号
两个字符串用加号连接,那么将来加号起到的作用是连接两个字符串
b.
两个数值用加好连接,那么将来加号起到的作用是加法运算符的作用
c.
加号连接的两个直接量中有一个是字符串,那么加号的作用是连接
15.typeof(“abc”)
1. Typeof(直接量)![]()
2.也可以不加括号直接使用
15.变量![]()
16.变量使用以及赋值运算符
17.变量的命名规则
18.变量的数据类型
19.变量之间的相互赋值
20.boolean类型
21.undefined类型
23.乘除
乘:就是两个数值之间相乘
除:就是两个数值之间相除
运算顺序:先乘除后加减
24.
取余%
()括号改变运算符的优先级
25.
Math 对象![]()

JavaScript基础教程之alert弹出提示框实例_javascript技巧
alert 命令弹出一个提示框
为便于对 JavaScript 有一个直观的认识,本节会提供几个简单的实例供 JavaScript 入门学习之用。下面的代码是一个弹出提示框的例子:
将上面部分代码,用文本编辑器(如写字板或其他更高级的编辑器,如 EditPlus 等)保存为 alert.html(或 alert.htm)。双击 alert.html 运行它(实际是使用 IE 等浏览器打开这个文件),会看到如下弹出提示框:

提示
立即学习“Java免费学习笔记(深入)”;
如果使用 IE 浏览器提示:为了有利于保护安全性,Internet Explorer 已经限制此网页运行可以访问计算机的脚本或 ActiveX 空间。”,那么请选择“允许阻止的内容”,以允许IE浏览器运行上面的 JavaScript 代码。
实例语法解释
下面对上面例子的 JavaScript 语法做一个简单的解释:
代表结束。JavaScript 代码要放在这个开始与结束之间。
alert("我是提示文字!"); 就是 JavaScript 代码,alert() 表示弹出一个提示框(如上图所示),代码以英文的 ; 表示结束。
弹出框的提示文字,以 "" 或 '''' 引起来,并放入 alert() 中。
关于Javascript基础教程之数组 array和javascript中数组的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于JavaScript之数组Array、Javascript基础之Array数组API、javaScript基础教程day01、JavaScript基础教程之alert弹出提示框实例_javascript技巧的相关知识,请在本站寻找。