Js find,filter,some,every,reduce,forEach,map,for...in,for...of方法介绍

const user = [
    { age: 28, name: 'zhangsan' },
    { age: 25, name: 'lisi' },
    { age: 97, name: 'wangmazi' },
    { age: 8, name: 'zhaoliu' },
    { age: 32, name: 'wangwu' },
    { age: 28, name: 'jack' },
    { age: 47, name: 'tom' }
];

const ages = [28, 97]

1、find

//返回符合条件的第一个值,如果没有符合条件的元素返回 undefined

//参数:item 当前遍历到的元素。index可选 当前遍历到的索引。 array可选 数组本身。
const value = user.find((item,index,user) => item.age == 28);
console.log(value); 
// {age: 28, name: "zhangsan"}

2、filter

//返回符合条件的数组,如果没有,则返回空数组

//参数:item 当前遍历到的元素。index可选 当前遍历到的索引。 array可选 数组本身。thisValue(不常用) 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
const value = user.find((item,index,user) => item.age == 28);
console.log(value); 
//[{age: 28, name: "zhangsan"},{age: 28, name: "jack"}]


//thisValue 例子
const filteredData = user.filter(function (value) {
  console.log(value)
    for (var i = 0; i < this.length; i++) {
        if (this[i] === value.age) {
            return true;
        }
    }
    return false
}, ages);

console.log(filteredData)
//[{age: 28, name: "zhangsan"},{age: 97, name: "wangmazi"},{age: 28, name: "jack"}]

3、forEach

// 对数组的每一个元素执行一次方法,不能退出

//参数:item 当前遍历到的元素。index可选 当前遍历到的索引。 array可选 数组本身。thisValue(不常用) 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
user.forEach((item) => console.log(item));

//注意:forEach能修改当前元素的对象属性,但不能修改当前元素的值(不能修改基本类型的)

4、map

//返回一个新数组,数组中的元素为原始数组元素执行方法后的值。不能退出

//参数:item 当前遍历到的元素。index可选 当前遍历到的索引。 array可选 数组本身。thisValue(不常用) 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
const agesCopy = ages.map((item) => {return ++item});
console.log(agesCopy)
//[29,98]

5、some

// 返回一个boolean值,用来检测是否有符合条件的元素。如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false

//参数:item 当前遍历到的元素。index可选 当前遍历到的索引。 array可选 数组本身。thisValue(不常用) 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
const age = user.some(item => item.age === 28)
console.log(age)
//true

6、eveny

// 返回一个boolean值,用来检测所有元素是否都符合指定条件。如果有一个元素不满足条件,则表达式返回false, 剩余的元素不会再执行检测。如果全部满足条件,则返回true

//参数:item 当前遍历到的元素。index可选 当前遍历到的索引。 array可选 数组本身。thisValue(不常用) 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
const age = user.every(item => item.age === 64)
console.log(age)
//false

7、reduce

//接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

//参数:acc 累计器,cur(当前值),idx (当前索引),src(源数组)
const total = user.reduce((acc,cur,idx,user) => {return acc + cur.age},0)
console.log(total)
//265

7、for of

//for...of语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句

for (const age of ages) {
    console.log(age);	
}
// 28 97

8、for in

//for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。

const obj = { age: 28, name: 'zhangsan' }
for (const i in obj) {
    console.log(obj[i]);
}	// 28 zhangsan

//注意:for...in不应该用于迭代一个 Array,其中索引顺序很重要。(不推荐用于数组)
例:    
	const arr = new Array('aaa', 'bbb', 'ccc', 'ddd')
    Array.prototype.eee = 'eee'
    for (var i in arr) {
      console.log(arr[i])
    } 
	// aaa, bbb, ccc, ddd, eee
    //for ... in循环语句将返回所有可枚举属性,包括非整数类型的名称和继承的那些。

欢迎评论,如有错误请指出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值