数组函数 some every find filter map reduce forEach

在这里插入图片描述
some
遍历数组,判断元素是否符合判断条件,若有一个符合就返回 true,若都不符合则返回 false,匿名函数的返回值就是判断条件
1、不创建新数组
2、不改变原数组
3、输出的是判断为true则马上跳出循环并return成true
4、回调函数参数,item(数组元素)、index(序列)、arr(数组本身)
5、使用return操作输出,会循环数组每一项,并在回调函数中操作

let arr = [3,2,1];
console.log( arr.some(item => item === 1) );

every(与some相反)
遍历数组,判断元素是否符合判断条件,如果都符合则返回 true,否则返回 false,匿名函数的返回值就是判断条件
1、不创建新数组
2、不改变原数组
3、输出的是判断为false则马上跳出循环并return成false
4、回调函数参数,item(数组元素)、index(序列)、arr(数组本身)
5、使用return操作输出,会循环数组每一项,并在回调函数中操作

var computers = [
    { name: "Apple", ram: 8 },
    { name: "IBM", ram: 4 },
    { name: "Acer", ram: 32 },
];
var every = computers.every(function (computer) {
    return computer.ram > 16;
});
console.log(every);//false

find

1、不创建新数组
2、不改变原数组
3、输出的是一旦判断为true则跳出循环输出符合条件的数组元素
4、回调函数参数,item(数组元素)、index(序列)、arr(数组本身)
5、使用return操作输出,会循环数组每一项,并在回调函数中操作

//假定有一个对象数组,找到符合条件的对象
var users = [
    { name: 'Jill' },
    { name: 'Alex', id: 1 },
    { name: 'Bill' },
    { name: 'Alex' },
];
var user = users.find(function (user) {
    return user.name === 'Alex';
});
console.log(user);//[{ name: 'Alex', id: 1 }]

filter
过滤数组,把符合规则的元素组合成一个新数组
1、创建新数组
2、不改变原数组
3、输出的是判断为true的数组元素形成的新数组
4、回调函数参数,item(数组元素)、index(序列)、arr(数组本身)
5、使用return操作输出,会循环数组每一项,并在回调函数中操作

var lesson = [
    { name: "Vue", type: "前端", people: 786 },
    { name: "Nodejs", type: "服务端", people: 452 },
    { name: "React Native", type: "移动端", people: 165 },
    { name: "Electron", type: "桌面端", people: 153 }
];
// 执行filter(),过滤学习人数 > 300 的课程
var newArray = lesson.filter(function(item){
    return item.people > 300
});
console.log(newArray);
/** 过滤的新数组
 * [
 *    {name: "Vue", type: "前端", people: 786},
 *  {name: "Nodejs", type: "服务端", people: 452}
 * ]
*/ 

// ES6箭头函数,简洁写法
console.log(lesson.filter(item => item.people > 300));

map
映射数组,将原数组的每一项元素按照规则进行改变,将所有改变的结果组合成一个新数组
1、创建新数组
2、不改变原数组
3、输出的是return什么就输出什么新数组
4、回调函数参数,item(数组元素)、index(序列)、arr(数组本身)
5、使用return操作输出,会循环数组每一项,并在回调函数中操作

var lesson = [
    { name: "Vue", type: "前端", people: 786 },
    { name: "Nodejs", type: "服务端", people: 452 },
    { name: "React Native", type: "移动端", people: 165 },
    { name: "Electron", type: "桌面端", people: 153 }
];
// 将每一项元素映射为该元素的name值
var nameArray = lesson.map(function(item){
    return item.name
});
console.log(nameArray);
// ["Vue", "Nodejs", "React Native", "Electron"]

// ES6箭头函数,简介写法
console.log(lesson.map(item => item.name));

raduce

迭代数组
1、创建新数组
2、不改变原数组
3、输出的是return叠加什么就输出什么 新数组
4、使用return操作输出,会循环数组每一项,并在回调函数中操作
5、回调函数参数

  • pre(第一次为数组第一项,之后为上一操作的结果)
  • next(数组的下一项)
  • index(next项的序列)
  • arr(数组本身)
    回调函数后的改变第一项参数。(不影响原数组)
// 数字迭代计算
var arr = [1, 7, 5, 4];

// 获取最大值
var maxNum = arr.reduce(function(prev, item){
    return prev > item ? prev : item;
});
console.log(maxNum); // 7

// 获取总和
var sum = arr.reduce(function(prev, item){
    return prev + item;
});
console.log(sum); // 17

// ES6箭头函数,简介写法
console.log(
    arr.reduce((prev, item) => (prev > item ? prev : item), arr[0])
); // 7
console.log(arr.reduce((prev, item) => prev + item, 0)); // 17

//获取总人数
var lesson = [
    { name: "Vue", type: "前端", people: 786 },
    { name: "Nodejs", type: "服务端", people: 452 },
    { name: "React Native", type: "移动端", people: 165 },
    { name: "Electron", type: "桌面端", people: 153 }
];

// 计算所有课程的学习人数总和,传递起始值为0
var peopleArray = lesson.reduce(function(prev, item) {
    return prev + item.people;
}, 0);
console.log(peopleArray); // 1538

// ES6箭头函数,简洁写法
console.log(
    lesson.reduce((prev, item) => prev + item.people, 0)
); //1538

forEach
遍历数组全部元素,利用回调函数对数组进行操作,自动遍历数组.length次数,且无法break中途跳出循环
不支持return操作输出,return只用于控制循环是否跳出当前循环

var colors = ['red', 'blue', 'green']
colors.forEach(function (color) {
    console.log(color);//red blue green
})

原文链接:https://blog.csdn.net/callmeCassie/article/details/88832836
https://segmentfault.com/a/1190000022647129#filter

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值