首页 > 代码库 > js array filter pop push shift unshift方法

js array filter pop push shift unshift方法

JavaScript Array filter() 方法

技术分享 JavaScript Array 对象

实例

返回数组 ages 中所有元素都大于 18 的元素:

var ages = [32, 33, 16, 40];

function checkAdult(age) {
    return age >= 18;
}

function myFunction() {
    document.getElementById("demo").innerHTML = ages.filter(checkAdult);
}

输出结果为:

32,33,40

尝试一下 »

定义和用法

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

注意: filter() 不会对空数组进行检测。

注意: filter() 不会改变原始数组。


浏览器支持

表格中的数字表示支持该方法的第一个浏览器的版本号。

方法     
filter()Yes91.5YesYes

语法

array.filter(function(currentValue,index,arr), thisValue)

参数说明

参数描述
function(currentValue, index,arr)必须。函数,数组中的每个元素都会执行这个函数
函数参数:
参数描述
currentValue必须。当前元素的值
index可选。当期元素的索引值
arr可选。当期元素属于的数组对象
thisValue可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
如果省略了 thisValue ,"this" 的值为 "undefined"

技术细节

 

返回值:返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
JavaScript 版本:1.6

 

 

JavaScript Array map() 方法

技术分享 JavaScript Array 对象

实例

返回一个数组,数组中元素为原始数组的平方根:

var numbers = [4, 9, 16, 25];

function myFunction() {
    x = document.getElementById("demo")
    x.innerHTML = numbers.map(Math.sqrt);
}

输出结果为:

2,3,4,5

尝试一下 »

定义和用法

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

注意: map() 不会对空数组进行检测。

注意: map() 不会改变原始数组。


浏览器支持

表格中的数字表示支持该方法的第一个浏览器的版本号。

方法     
map()Yes91.5YesYes

语法

array.map(function(currentValue,index,arr), thisValue)

参数说明

参数描述
function(currentValue, index,arr)必须。函数,数组中的每个元素都会执行这个函数
函数参数:
参数描述
currentValue必须。当前元素的值
index可选。当期元素的索引值
arr可选。当期元素属于的数组对象
thisValue可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
如果省略了 thisValue ,"this" 的值为 "undefined"

技术细节

 

返回值:返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
JavaScript 版本:1.6

JavaScript Array some() 方法

技术分享 JavaScript Array 对象

实例

检测数组中是否有元素大于 18:

var ages = [3, 10, 18, 20];

function checkAdult(age) {
    return age >= 18;
}

function myFunction() {
    document.getElementById("demo").innerHTML = ages.some(checkAdult);
}

输出结果为:

true

尝试一下 »

定义和用法

some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。

some() 方法会依次执行数组的每个元素:

  • 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
  • 如果没有满足条件的元素,则返回false。

注意: some() 不会对空数组进行检测。

注意: some() 不会改变原始数组。


浏览器支持

表格中的数字表示支持该方法的第一个浏览器的版本号。

方法     
some()Yes91.5YesYes

语法

array.some(function(currentValue,index,arr),thisValue)

参数说明

参数描述
function(currentValue, index,arr)必须。函数,数组中的每个元素都会执行这个函数
函数参数:
参数描述
currentValue必须。当前元素的值
index可选。当期元素的索引值
arr可选。当期元素属于的数组对象
thisValue可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
如果省略了 thisValue ,"this" 的值为 "undefined"

技术细节

 

返回值:布尔值。如果数组中有元素满足条件返回 true,否则返回 false。
JavaScript 版本:1.6

在javascript脚本中,栈数据结构的访问规则是LIFO(后进先出),而队列数据结构的访问规则是FIFO(first-in-first-out,先进先出)。
队列在列表的末端添加项,从列表的前端移除项。
由于push()是向数组末端添加项的方法,一次要模拟队列只需一个从数组前端取得项的方法。
实现此操作的数组方法就是shift(),它能够移除数组中的第一项并返回该项,同时将数组长度减1。
结合使用shift()和push()方法,可以像使用队列一样使用数组:
 

复制代码代码示例:
var colors = new Array();                 //创建一个数组
var count = colors.push("red", "green");  //推入两项
alert(count);                             //2
count = colors.push("black");             //推入另一项
alert(count);                             //3
var item = colors.shift();                //取得第一项
alert(item);                              //"red"
alert(colors.length);                     //2
 

ECMAScript还为数组提供了一个unshift()方法。unshift()shift()的用途相反:它能在数组的前端添加任意各项并返回新数组的长度。
因此,同时使用unshift()和pop()方法,可以从相反的方向来模拟队列,即在数组的前端添加项,从数组末端移除项,例如:
 

复制代码代码示例:

var colors = new Array();                    //创建一个数组
var count = colors.unshift("red", "green");  //推入两项
alert(count);                                //2

count = colors.unshift("black");             //推入另一项
alert(count);

var item = colors.pop();                     //取得最后一项
alert(item);                                 //"green"
alert(colors.length);                        //2
 

IE对JavaScript的实现存在一个偏差,其unshift()方法总是返回undefined而不是数组的新长度。

 

js array filter pop push shift unshift方法