js中处理数组的函数有很多。这篇文章做下简单的整理。

过滤函数

filter()

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

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

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

语法

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

参数

function : (string|regex) [require] - 必须。函数,数组中的每个元素都会执行这个函数。

这个函数可传三个参数:

  • currentValue : (*) [require] - 当前元素的值。
  • index : (int) [optional] - 当前元素的索引。
  • arr : (array) [require] - 当前元素属于的数组对象。

thisValue : (*) [optional] - 回调时传递给函数,用作 “this” 的值。

返回值

返回一个新的数组。

例子

利用 filter 遍历出所有偶数:

1
2
3
4
5
6
let arr = [56, 15, 48, 3, 7];
let newArr = arr.filter(function (value, index, array) {
return value % 2 === 0;
});
console.log(newArr)
// [56, 48]

利用 filter 进行数组去重:

1
2
3
4
5
6
7
8
9
function unique(arr) {
return arr.filter(function(item, index, arr) {
//当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
return arr.indexOf(item, 0) === index;
});
}
var arr = [1,1,'RUNOOB','RUNOOB',true,true,15];
console.log(unique(arr))
// [1, "RUNOOB", true, 15]

利用 filter 过滤空值

1
2
3
let arr = [1, 0, '' , 'a', null, '张三']
let newArr = arr.filter(Boolean)
console.log(newArr) // [1, 'a', '张三']

array.filter(Boolean) 等价于 array.filter((item) => {return Boolean(item)}) 。也就是说这样写的意思就是去除数组中为“假”的元素。0, undefined, null, NaN, '', false

数组的切割和添加

shift()

shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

语法

1
array.shift()

返回值

返回删除的元素