filter()方法返回一个新数组,包含通过callback function测试的所有element。
语法如下:
var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])
thisArg为可选参数,执行callback时,用於指定this的值。
const arr1 = [1, 4, 5, 6, 2, 3, 8, 9, 0];
const arr2 = arr1.filter((item, index, array) => {
return item > 5;
});
console.log(arr2);//>> [6, 8, 9]
callback函数只要return true就会保留当前的element。
find()方法会返回通过callback function测试的第一个值,如果没有就返回undefined。
语法如下:
var item = arr.find(callback(element[, index[, array]])[, thisArg])
let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const value = arr.find((item, index, array) => {
return item > 5
});
console.log(value); //>> 6
与find类似的方法是findIndex(),区别在於find返回值,而findIndex返回index,如果没有就返回-1。
some()方法测试数组中是不是有任何一个element通过测试,如果有的话返回true。
语法如下:
arr.some(callback(element[, index[, array]])[, thisArg])
如果对空array进行测试,任何状况下都是返回fasle。
let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const isTrue = arr.some((item, index, array) => {
return item > 5;
});
console.log(isTrue); //>> true
与filter和find相比,除了返回值有区别外,还有一个区别是:如果原数组中存在被删除或是没有被赋值的索引,则callback function不会在该element上调用。
const arr = new Array(4);
arr[0] = 1;
const isTrue = arr.some((item,index) => {
console.log(`test ${index}`)
return item > 5;
});
console.log(isTrue); //>> false
上面的例子只有在index = 0的element callback有调用。
语法:
var newArray = arr.sort([compareFunction]);
参数:
compareFunction: 可选,指定一个函式来定义排序顺序。假如省略此参数,阵列将根据各个元素转为字串後的每一个字元之 Unicode 编码位置值进行排序。
let arr = [1, 4, 5, 6, 2, 3, 8, 9, 0];
arr.sort((a, b) => {
return a - b;
});
console.log(arr);
//>> [0, 1, 2, 3, 4, 5, 6, 8, 9]
sort()的compare function接收两个参数,这两个参数会按照function的返回值进行排序:
let arr = [2, 40, 11, 5, 10];
console.log(arr.sort());
//>> [10, 11, 2, 40, 5]
上述例子中,因为没有传入callback function,所以在Unicode中,1在2前面,所以10在2前面,以此类推。
reduce()方法对数组中的每一项执行所提供的call back function後,最後回传一个单个值。
语法:
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
参数说明:
reduce的定义比较抽象,开发中比较少用到,但若是用的好可以大大提升工作效率,以下提供一个简单的例子。
拥有一个已下数组:
const arr = [
{
username: 'John',
displayname: 'John',
email: '[email protected]'
},
{
username: 'David',
displayname: 'David',
email: '[email protected]'
},
{
username: 'Sarah',
displayname: 'Sarah',
email: null
},
];
透过reduce转换为object
function callback(acc, person){
return {...acc,[person.username] : person}
}
const obj = arr.reduce(callback, {})
console.log(obj)
//
David: {username: "David", displayname: "David", email: "[email protected]"}
John: {username: "John", displayname: "John", email: "[email protected]"}
Sarah: {username: "Sarah", displayname: "Sarah", email: null}
<<: LeetCode 双刀流: 236. Lowest Common Ancestor of a Binary Tree
>>: 【Tableau Desktop入门】免费2小时基础操作体验
接下来要回去弄日K交易策略,先把网格交易机器人打包起来独立成一个档案,还有把登入的部分打包起来,未来...
为甚麽会出现动态连结? 动态连结出现的原因就是为了解决静态连结中提到的两个问题: 浪费空间,因为每个...
在写网页样式时,最重要的就是选择器的使用,写得好容易理解,修改没烦恼,也可以让网页快速呈现效果。以下...
昨天有提到人变成主角,食物变成配角,大概就是像这样 广义上来说,吃到饱是从红亭开始的,但是我那时候都...
存放题目和读取题目的google 试算表搞定了 呈现题目的google 表单也搞定了 接下来来说说记...