js数组

1.数组检测

typeof 返回object,不能区分数组和对象

instanceof

例:if (value instanceof Array){
   //对数组执行某些操作
  }

不适用于多个执行环境下,如网页中包含多个框架

Array.isArray() 适用于多个执行环境下,但可能低版本浏览器不兼容

 

2.转换方法

toString()  返回字符串

toLocaleString()  一般情况下返回和toString相同

valueOf()  返回数组

join() 接收一个参数,用作分隔符的字符串,然后返回包含所有数组项的字符串,不传默认逗号分隔

例:

let arr=[1,2,3,4,5,6]

console.log(arr.toString())    //1,2,3,4,5,6

console.log(arr.toLocaleString())  //1,2,3,4,5,6

console.log(arr.valueOf())  //[1, 2, 3, 4, 5, 6]

console.log(arr.join())  //1,2,3,4,5,6

console.log(arr.join('-'))  //1-2-3-4-5-6

 

3.栈丶队列

push()  向数组末尾添加新元素,返回数组的length

pop()   删除数组最后一个元素,返回移除的项

unshift() 向数组开头添加新元素,返回数组的length

shift()  删除数组第一个元素,返回移除的项

 

4.排序

sort() 数组从小到大排序,可传入排序函数

reverse() 反转数组

例(排序函数):

function compare(value1, value2) {
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}

简化:

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

 

5.操作方法

不会改变原数组:

 concat()  合并数组和参数,参数可以是元素或数组,返回新的数组

 slice()  分割数组,返回新的数组。可以接收2个参数,传一个参数(i),返回从i到结尾的数组(包括i);传2个参数(i,j),返回从i到j的数组(包括i,不包括j)

 

会改变原数组:

splice()   返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)。

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

 

6.查找

indexOf()  从数组的开头(位置 0)开始向后查找

lastIndexOf()  从数组的末尾开始向前查找

 indexOf() 和 lastIndexOf() 这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引,都返回要查找的项在数组中的位置,或者在没找到的情况下返回1。

 

7. 迭代方法

ECMAScript 5 为数组定义了 5 个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响 this 的值。传入这些方法中的函数会接收三个参数:数组项的值、该项在数组中的位置和数组对象本身。根用的方法不同,这个函数执行后的返回值可能会也可能不会影响方法的返回值。以下是这 5 个迭代方法的作用。
 every() :对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true 。
 filter() :对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
 forEach() :对数组中的每一项运行给定函数。这个方法没有返回值。
 map() :对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
 some() :对数组中的每一项运行给定函数,如果该函数对任一项返回 true ,则返回 true 。
以上方法都不会修改数组中的包含的值。
在这些方法中,最相似的是 every() 和 some() ,它们都用于查询数组中的项是否满足某个条件。对 every() 来说,传入的函数必须对每一项都返回 true ,这个方法才返回 true ;否则,它就返回false 。而 some() 方法则是只要传入的函数对数组中的某一项返回 true ,就会返回 true 。

例子:

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item, index, array){
return (item > 2);
});
alert(everyResult); //false
var someResult = numbers.some(function(item, index, array){
return (item > 2);
});
alert(someResult); //true

 

var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item, index, array){
return (item > 2);
});
alert(filterResult); //[3,4,5,4,3]

 

var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item, index, array){
return item * 2;
});
alert(mapResult); //[2,4,6,8,10,8,6,4,2]

 

var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item, index, array){
//执行某些操作
});

 

8.归并

 reduce()   从数组的第一项开始

 reduceRight()  从数组的最后一项开始

这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。传给 reduce() 和 reduceRight() 的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。

例子:(使用 reduce() 还是 reduceRight() ,主要取决于要从哪头开始遍历数组)

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15

 

var values = [1,2,3,4,5];
var sum = values.reduceRight(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值