数组遍历

今天开发项目的某个功能,发现js有个简便检测一个数组是否包含另个数组的方法,记录一下

  showSkill()
    {
        let data = [[0,2,7],[4,6,9,7],[0,4,3,8],[1,5,4,6,2]];
        let temp = [4,9,6,7];
        data.forEach(function (value,key) {
            if (self.isContain(temp,value))
            {
                console.log("==*== value=>",value);
            }
        })
    },
    
    isContain(arr1,arr2)
    {
        return arr2.every(key=>arr1.includes(key));
    },

结果:* value=> [4, 6, 9, 7]
扩展
(1)every()是对数组中每一个绑定目标函数,若每一个都符合则返回true;
从迭代开始,如果数组中有一个不满足目标函数,就不会继续迭代下去了。

var arr = [4,5,2,3,7];
var temp = arr.every(function(vaule,index,array){
    console.log("==*== vaule,index,arrary=>",vaule,index,array);
    return vaule > 4;
});
console.log("==*== temp=>",temp);

输出:
在这里插入图片描述
(2)some()是对数组中每一个绑定目标函数,若有一个都符合则返回true;
从迭代开始,如果数组中有一个满足目标函数,就不会继续迭代下去了。

var arr = [4,5,2,3,7];
var temp = arr.some(function(vaule,index,array){
    console.log("==*== vaule,index,arrary=>",vaule,index,array);
    return vaule > 4;
});
console.log("==*== temp=>",temp);

输出:
在这里插入图片描述
(3)reduce方法
用处1:数组去重(初始化一个空数组,判断下一个元素是否在当前数组中,不存在则添加到当前数组中)

// 数组去重
var arr = [12, 34, 34, 342, 345, 34, 123, 345, 45, 12]
var newArr = arr.reduce(function (prev, next) {
    prev.indexOf(next) == -1 && prev.push(next)
    return prev
}, [])
console.log(arr)  // [12, 34, 34, 342, 345, 34, 123, 345, 45, 12]
console.log(newArr) // [12, 34, 342, 345, 123, 45]

用处2:数组求和(将0当做reduce回调函数中的初始值,然后依次累加)

// 数组求和
var arr = [1, 2, 3, 4, 5]
var total = arr.reduce(function (prev, next) {
    return prev + next
}, 0)
console.log(total)

用处3:(求数组中最大值或最小值)

// 获取数组中最大值
var arr = [134798, 3478973, 12, 345, 355, 425, 1342356, 3425566, 7908798]
var max = arr.reduce(function (prev, next) {
    return Math.max(prev, next)    // Math.min(prev, next)
}, 0)
console.log(max)

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值