首页 > 编程语言 > 详细

JavaScript(es6)数组常用的方法

时间:2019-03-26 15:48:25      阅读:116      评论:0      收藏:0      [点我收藏+]

常用方法

1.forEach()

var data = [1,2,3,4,5];
var sum = 0;
//求和 data.forEach((item)=>{sum+=item}) //给原数组的每个值加1 data.forEach((value,index,data)=>{data[index] = value + 1})

2.concat()  //合并多个数组,返回合并后的新数组,原数组没有变化。

const array = [1,2].concat([‘a‘, ‘b‘], [‘name‘]);
// [1, 2, "a", "b", "name"]

3.filter()  //返回一个新数组,包含通过callback函数测试的所有元素。

var fil = [5,4,3,2,1];
smallvalues = fil.filter((x)=>{return x < 3});
console.log(smallvalues)//小于3
oddNumber = fil.filter((x,i) => x % 2 === 0);//偶数

4.map()  //返回新数组

var a = [1,2,3], b;
b = a.map((x)=>{return x*3});
console.log(a,b)

5.every()和some()  //every()和some()方法是数组的逻辑判定

var ever = [1,2,3,4,5];
var xiaoyushi = ever.every((x)=>{return x < 10})//返回true,所有的值都小于10
var evenNumber = ever.every((x)=> x % 2 === 0)//返回false,不是所有的值都是偶数
var shifouyousi = ever.some((x)=> x==4)//数组里面有一个值等于4则返回true

6.reduce()和reduceRight

//reduce为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值)
var arr = [1,2,3,4];
var qiuhe = arr.reduce((prev, cur, index, arr)=>{
//prev:上一次调用回调返回的值,或者是提供的初始值(initialValue); cur:数组中当前被处理的元素
    console.log(prev, cur, index);
    return prev + cur;
})
//实例解析initialValue参数
var arr1 = [1,2,3,4];
var qiuhe2 = arr1.reduce((prev,cur,index,arr)=>{
    console.log(prev,cur,index);
    return prev + cur;
},0)//这里设置了初始值
console.log(arr1, qiuhe2);
//结论: 如果没有initialValue,reduce会从索引1的地方开始执行callback方法,跳过第一个索引。如果提供initialValue,从索引0开始。
            
/*var arr2 = [];
var qiuhe3 = arr2.reduce((prev, cur, index, arr)=>{//报错,不能处理空数组
    console.log(prev, cur, index);
    return prev + cur;
})*/
            
var arr3 = [];
var qiuhe4 = arr3.reduce((prev, cur, index, arr)=>{//不会报错,因为设置了初始值
    console.log(prev, cur, index);
    return prev + cur;
},0)
console.log(arr3,qiuhe4)
            
            
//reduce的简单用法(求和,求乘积)
var arr4 = [1,2,3,4,5,6,7,8,9,10];
var qiuhe5 = arr4.reduce((x,y)=>{return x + y})
var mul = arr4.reduce((x,y)=>{return x * y})
var max = arr4.reduce((x,y)=>{return (x>y)?x:y})//求最大值
            
//reduce的高级用法
//1.计算数组中每个元素出现的次数
let names = [‘alice‘,‘bob‘,‘tiff‘,‘bruce‘,‘alice‘];
let nameNum = names.reduce((pre, cur)=>{
    if(cur in pre){
        pre[cur]++
    }else{
        pre[cur] = 1
    }
    return pre
},{})
console.log(nameNum)
            
//2.数组去重
let arr5 = [1,2,3,4,4,3,5];
let newArr = arr5.reduce((pre, cur)=>{
    if(!pre.includes(cur)){
        return pre.concat(cur)
    }else{
        return pre
    }
},[])
console.log(newArr)
            
//3.将二维数组转化为一维数组
let arr6 = [[0,1],[2,3],[4,5]];
let newArr2 = arr6.reduce((pre,cur)=>{
    return pre.concat(cur)
},[])
console.log(newArr2);
            
//4.将多维数组转化为一维数组
let arr7 = [[0,1],[2,3],[4,[5,6,7]]]
    const newArr3 = function(arr){
        return arr.reduce((pre,cur)=>{
            return pre.concat(Array.isArray(cur)? newArr3(cur): cur)
        },[])
}
console.log(newArr3(arr7));
            
//5.对象里的属性求和
var result = [
    {
        subject: ‘math‘,
        score: 10
    },
    {
        subject: ‘chinese‘,
        score: 20
    },
    {
        subject: ‘english‘,
        score: 30
    }
];
            
var qiuhe6 = result.reduce((prev,cur)=>{
    return cur.score + prev
},0)
console.log(qiuhe6)  

JavaScript(es6)数组常用的方法

原文:https://www.cnblogs.com/fuzhengyi/p/10600555.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!