ES5+ES6数组扩展方法

91 阅读4分钟

ES5扩展的方法

indexOf() 返回指定元素第一次出现的位置

lastIndexOf() 返回指定元素最后一次出现的位置

forEach() 遍历数组

 // 定义数组
        var nameList = ['欧阳姥姥', '司马姥姥', '独孤姥姥', '令狐姥姥', '东方姥姥', '西门姥姥', '诸葛姥姥'];
        var user = {name: '张飞', age: 44, address: '河北'};
        var users = [
            {name: '曹操', age: 67, address: '许昌'},
            {name: '刘备', age: 47, address: '成都'},
            {name: '孙权', age: 37, address: '南京'},
            {name: '吕布', age: 51, address: '包头'},
            {name: '赵云', age: 46, address: '石家庄'},
            user,
            {name: '诸葛亮', age: 53, address: '南阳'}
        ];
        
        console.log(nameList.indexOf('独孤姥姥'));
        console.log(nameList.lastIndexOf('独孤姥姥'));
        console.log(users.lastIndexOf(user));  // 5
        console.log('');
        console.log('');

        // 遍历数组
        users.forEach(function(item, index) {
            console.log(item, index);
        });
        console.log('');
        console.log('');


        // **filter** 从原数组中过滤出复合条件的元素,组成新数组并返回
        // 找出50岁以上的用户,组成新数组,发福利
        var users01 = users.filter(function(item,index){
            return item.age >= 50;
        });
        console.log(users01);
        console.log('');
        console.log('');

        // map 从原数组中提取信息作为新数组的元素并返回,新数组元素个数与原元素一致
        // 回调函数每次调用的返回值作为新数组的元素
        // 提取每个用户的名字,组成新数组
        var users02 = users.map(function(item, index) {
            return item.name;
        });
        console.log(users02);
        // 让每个用户的年龄 +2
        var users03 = users.map(function(item) {
            item.age += 2;
            return item;
        });
        console.log(users03);
        console.log('');
        console.log('');

        // every() 返回值是布尔值
        // 如果每个回调函数的返回值都是true,最终结果就是true; 一旦有一个回调函数没有返回true,最终结果就是false
        // 判断是否所有的用户都是成年人
        var res1 = users.every(function(item, index){
            return item.age >= 18;
        });
        console.log(res1);
        console.log('');

        // some() 返回值是布尔值
        // 只要有一个回调函数返回true,最终结果就是true;
        // 判断用户中有没有石家庄的
        var res2 = users.some(function(item, index){
            return item.address === '石家庄';
        });
        console.log(res2);
        console.log('');
        console.log('');

        // reduce()
        // 最后一个回调的返回值作为 reduce 的返回值
        // 计算所有用户的年龄和
        var res3 = users.reduce(function(prev, item, index){
            return prev + item.age;
        }, 0);
        console.log('所有用户的年龄和:', res3);
        console.log('');

        // reduceRight()
        users.reduceRight(function(prev, item, index) {
            console.log(prev, item, index);
        }, 0);

ES6数组扩展的方法

 // ES6对于数组方法的扩展(重要使用的)
        //1.Array.from()  可以把伪数组转成数组
        //2.flat()  数组扁平化,可以把数组降维,默认值为1,括号中可以写数组指定降几维
        // 3.includes()   判断数组里面是否包含某个值

    // 使用少的扩展)
        // 4.Array.of()  创建一个数组
        // 5.find()和findIndex()
            //find():会查找符合条件的第一个元素
            //findIndex():查找符合条件的第一个元素的索引值

            // at()  获取数组的值
            // fill()  填充数组里面的键值
                    //arr.fill("填充的内容","开始填充的索引","结束填充的索引值")顾头不顾尾
        
        //1.将伪数组转换成数组两种方法:Array.from()和扩展运算符

       function fn(){
            // ES5获取元素的方法通过arguments伪数组方法
            console.log(arguments)
            // ES6中的展开运算符
            let arr = [...arguments]
            console.log(arr)
            // ES6新增加的数组方法
            let arr1 = Array.from(arguments)
            console.log(arr1)
            // Array和扩展运算符都可以将伪数组转换成数组
        }
        fn(1,2,3,4,5,6,7,87654)



        //2.flat()将数组扁平化

       let arr = [1,2,[3,4,[5,6,[7,8,[9,0]]]]]
        //方法一:通过ES5中字符串拼接
        let str = arr.toString()
        console.log(str)
        var newArr = str.split(',')
        console.log(newArr)

        //方法二:通过ES6中方法拓展数组的扁平化
        let newArr1 = arr.flat(4)    //括号内默认值是1,括号内的数字可以将数组扁平化几维度
        console.log(newArr1)



        //3.通过includes()方法判断数组中是否含有某个元素

       let arr = ['张三','李四','王五']
        // 方法一:使用ES5中的indexOf()判断数组中是否含有某个值,如果含有某个值那么就返回该值的索引号,如果没有值返回的就是-1
        let res = arr.indexOf('王五')
        console.log(res)
        // 方法二:使用ES6中的including(),判断数组中是否含有某个值,如果含有某个值那么就返回true,不含有就返回false
        let estimate = arr.includes('张三')
        console.log(estimate)

    

        //4.通过构造函数的形式创建一个含有一个数字的数组
       let arr = Array.of(7)
        console.log(arr) 


        // 5.通过find()和findIndex()
            //find()会查找符合条件的第一个元素
            //findIndex()会查找符合条件的第一个元素的索引值
       let arr = ['张三','李四','王五']
        let res = arr.find(function(item){
            return item == '李四'
        })
        console.log(res)

        let arr1 = [2,5,7,9,22]
        let res1 = arr1.find(item => item == 22)
        console.log(res1)  //返回的是查找到的元素返回出来返回单个值
        let res2 = arr1.findIndex(item => item ==22)
        console.log(res2)  //返回是查找到对应的元素的索引数 


        //6.获取数组的值at()
        let arr = [1,2,3,4,5,6]
        let res = arr.at(2)  //括号中写索引数
        console.log(res) 


        //7.fill()填充数组里面的键值
        let  arr = [1,2,3,4,5,6,7]
        //let res = arr.fill('a')   // ['a', 'a', 'a', 'a', 'a', 'a', 'a']
        let res = arr.fill('a',4,6) // [1, 2, 3, 4, 'a', 'a', 7]
        console.log(res)