javascript——数组

1.数组的定义

数组是有序的一组数据的集合。数组的每一项可以保存任何类型的数据。也就是说,可以用数组的第一个位置来保存字符串,用第二位置来保存数值,用第三个位置来保存对象,这样是完全可以的。

2.创建数组的方法。

1.构造函数的形式

var colors1 = new Array(20);
var colors2 = new Array("red", "blue", "green");

colors1是一个长度为20的数组。
colors2是一个长度为3的数组。

2.数字字面量模式

var colors3=["red","blue","green"];
console.log(colors3);//red,blue,green

3.es6的Array.of()

Array.of(3, 11, 8) // [3,11,8]
Array.of(3) // [3]
Array.of(3).length // 1

这一种方法主要是弥补第一种方法的不足。Array()因为参数个数的不同,其表现会有差异。

3.数组的栈方法

ecmascript提供了一种让数组的行为类似其他数据结构的方法。具体说来,数组可以表现得就像栈一样。栈是一种 数据结构,也就是最新添加的项最早被移除。而栈中项的插入(叫做推入)和移除(叫做弹出),只发生在一个位置——栈的顶部。

Array.push() // 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。
Array.pop() //从数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。

同时数组还提供了shift()和 unshift()这两个方法。

Array.shift() //从前面删除数组的项,并返回数组中被删除的项。
 Array.unshift()//从数组的前面添加项,并返回数组的长度。

4.数组的排序

数组中已经存在两个可以直接用来重排序的方法: reverse() 和 sort() 。

var arr=[1,2,3,4,5];
arr.reverse();
console.log(arr);//[5,4,3,2,1]

revese()可以数组进行倒序排列。

var arr=[1,4,3,7,5];
arr.sort();
console.log(arr);//[1,3,4,5,7]

数组的sort()方法可以对数组进行由小到大的顺序进行排列。但是sort()方法有一个问题。

var values = [0, 1, 5, 10, 15];
values.sort();
alert(values); //0,1,10,15,5

在默认情况下, sort() 方法按升序排列数组项——即最小的值位于最前面,最大的值排在最后面。为了实现排序, sort() 方法会调用每个数组项的 toString() 转型方法,然后比较得到的字符串,以确定如何排序。即使数组中的每一项都是数值, sort() 方法比较的也是字符串。

因此 sort() 方法可以接收一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面。

对于数值类型或者其 valueOf() 方法会返回数值类型的对象类型,可以使用一个简单的比较函数。这个函数只要用第二个值减第一个值即可。

function compare(value1, value2){
    return value2 - value1;
}

5.数组的操作方法

1.concat()

数组提供了 concat()的操作方法。 concat()方法基于当前的数组复制一个副本,并将传入的参数添加到副本的末尾,然后返回一个新的数组。

var arr=[1,3,5,7,9];
console.log(arr.concat(11,13));//[1,3,5,7,9,11,13]

2.slice()

slice() 方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下, slice() 方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项但不包括结束位置的项。注意, slice() 方法不会影响原始数组。

 var colors = ["red", "green", "blue", "yellow", "purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
alert(colors2);  //green,blue,yellow,purple
alert(colors3);  //green,blue,yellow

3.splice()

数组的splice()方法,为操作数组提供了强大的功能。
(1) 删除
可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。例如, splice(0,2) 会删除数组中的前两项。
(2)插入
可以向指定位置插入任意数量的项,只需提供 3 个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。例如,splice(2,0,”red”,”green”) 会从当前数组的位置 2 开始插入字符串 “red” 和 “green” 。
(3) 替换
可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。例如splice(2,1,”red”,”green”) 会删除当前数组位置 2 的项,然后再从位置 2 开始插入字符串”red” 和 “green”

splice()的第一个参数是开始的位置。第二个参数是删除的项数。第三个参数以及以后的参数是添加的项。
第二个参数是0就是往数组里面插入。
第二个参数是1时就替换数组中某些项。
splise()会改变原数组。slice()和concat()则不会。

6.数组的迭代方法

ECMAScript 5 为数组定义了 5 个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响 this 的值。

every() :对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true 。

forEach() :对数组中的每一项运行给定函数。这个方法没有返回值。

map() :对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

some() :对数组中的每一项运行给定函数,如果该函数对任一项返回 true ,则返回 true 。

filter() :对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。

函数可以传入三个参数。
参数1:数组的每一项。
参数2:该项在数组中的位置。
参数3:数组对象本身。
这五个方法可以看做for循环。对数组的每一项做一些操作。

 var arr = [1,2,3,4,5,4,3,2,1];
var arr2 = arr.every(function(item, index, array){
    return (item > 2);
});
alert(arr2); //false
var arr2 = arr.some(function(item, index, array){
    return (item > 2);
});
alert(arr2); //true
var arr = [1,2,3,4,5];
var filterResult = arr.filter(function(item, index, array){
    return (item > 2);
});
alert(filterResult); //[3,4,5]
var arr = [1,2,3,4,5];
var arr2 = arr.map(function(item, index, array){
    return item * 2;
});
alert(arr2); //[2,4,6,8,10]
var arr = [1,2,3,4,5];
arr.forEach(function(item, index, array){
    //执行某些操作
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值