zoukankan      html  css  js  c++  java
  • free code camp 刷题记录 js(ES6 箭头函数)

    ==========map reduce的用法实例==================

            let arr=new Array(4,1,2,3,4);
            item=4;
            console.log(count(arr,item));
    
            //测试一个数组中是否有item元素。map  filter reduce一起
            // 注意参数: 必选2个 total: 初始值+ 返回值  currentValue: 当前值。
            // 而且,这个必须返回之前的计算结果。返回值会作为第一个参数继续累加~  
            // 简单的一个箭头函数应该搞不定~~就~
    
            // 再有,下面这样写 , 给了prev初始值0。这样数组五个元素,跑五次,不然就是四次
            // 不给初始值的话 默认从第一个开始,赋值给第一个哦。一定要retrun一个 这里是prev
            function count(arr, item) {
                var cnt= arr.reduce((prev,index)=>{
                    if(index===item){
                        prev=prev+1;
                    }
                    console.log("之后prev",prev,"index",index);
                    return prev;
                },0);
                return cnt;
            }
    
            //1 filter (filter返回一个数组~~
            function count1(arr, item) {
                let count = arr.filter(x=>x===item);
                return count.length;
            }
            //2 map 对每一个都这样QAQ
            function count2(arr, item) {
                let num=0;
                arr.map(x=>{
                    x===item?num++:num;
                })
                return num;
            }

    虽然比不会好很多了 可是还是太基础啊
    基础是第一道坎 项目是后续加分(嗯)
    =========js基础部分============
    1/ 七种不同的数据类型,它们是undefined(未定义), null(空),boolean(布尔型),string(字符串),symbol(符号),number(数字),和object(对象)
    变量允许计算机以一种动态的形式来存储和操作数据,通过操作指向数据的指针而不是数据本身来避免了内存泄露,以上的七种数据类型都可以存储到一个变量中。

    赋值: 在 JavaScript 中,你可以使用赋值运算符将值存储在变量中。
    myVariable = 5;
    这条语句把Number类型的值5赋给变量myVariable。

    当 JavaScript 中的变量被声明的时候,程序内部会给它一个初始值undefined。当你对一个值为undefined的变量进行运算操作的时候,算出来的结果将会是NaN,NaN的意思是"Not a Number"。当你用一个值是undefined的变量来做字符串拼接操作的时候,它会输出字符串"undefined"。

    2/在 JavaScript 中所有的变量和函数名都是大小写敏感的。要区别对待大写字母和小写字母。
    !!!!所以我们用小驼峰命名法则.!!!


    3/创建浮点数 可以直接创建. 就是可能会有四舍五入的错误..
    直接乘除就可以.    
    注意 定义时 '1'和1不同 后面的才是数字.
    还有*= -=啊。
    虽然看起来b*=3 看起来很奇怪  但还是b=b*3;

    4/ 字符串中有  单双引号。使用反斜杠来转义吧!
    只要在"前面加一个  小小的来转移就可以


    那么先从箭头函数后面开始~

     【还没复制】

    ======================箭头函数高阶=============

    从filter说起。这篇文章很好~ https://www.cnblogs.com/blogzxl/p/7017622.html

    (1) 1 map相当于把每个数据都进行操作,然后返回  语义明确
    funtion pow(x){ return x*x };
    let arr=....
    arr.map(pow)
    【我们也看到了,对arr每个元素进行pow操作,map就是统领的意思~】
    arr.map(String)
    2 reduce 相当于对相邻两元素叠xxx(乘/加/...) 求和实例
    arr=..  
    arr.reduce(function(x,y){
        return (x+y)
    }匿名函数
    3 filter可以正产用 还可以接收另外两个参数,表示元素的位置和数组本身
    var r = arr.filter(function (x) {
        return x % 2 !== 0;
    });
    去重
    'use strict';
    var r,arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
    r = arr.filter(function (element, index, self) {
        return self.indexOf(element) === index;
    });
    alert(r.toString());
    依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。

    4 JavaScript的Array的sort()方法
    默认把所有元素先转换为String再排序,结果'10'排在了'2'的前面,因为字符'1'比字符'2'的ASCII码小。
    幸运的是,sort()方法也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序。

    要按数字大小排序,我们可以这么写:
    复制代码

    var arr = [10, 20, 1, 2];
    arr.sort(function (x, y) {
        if (x < y) {
            return -1;
        }
        if (x > y) {
            return 1;
        }
        return 0;
    }); // [1, 2, 10, 20]


    如果要倒序排序,我们可以把大的数放前面:
    var arr = [10, 20, 1, 2];
    arr.sort(function (x, y) {
        if (x < y) {
            return 1;
        }
        if (x > y) {
            return -1;
        }
        return 0;
    }); // [20, 10, 2, 1]
    默认情况下,对字符串排序,是按照ASCII的大小比较的,现在,我们提出排序应该忽略大小写,按照字母序排序。要实现这个算法,不必对现有代码大加改动,只要我们能定义出忽略大小写的比较算法就可以:
    复制代码

    var arr = ['Google', 'apple', 'Microsoft'];
    arr.sort(function (s1, s2) {
        x1 = s1.toUpperCase();
        x2 = s2.toUpperCase();
        if (x1 < x2) {
            return -1;
        }
        if (x1 > x2) {
            return 1;
        }
        return 0;
    }); // ['apple', 'Google', 'Microsoft']


    忽略大小写来比较两个字符串,实际上就是先把字符串都变成大写(或者都变成小写),再比较。

    从上述例子可以看出,高阶函数的抽象能力是非常强大的,而且,核心代码可以保持得非常简洁。

    最后友情提示,sort()方法会直接对Array进行修改,它返回的结果仍是当前Array:

    var a1 = ['B', 'A', 'C'];
    var a2 = a1.sort();
    a1; // ['A', 'B', 'C']
    a2; // ['A', 'B', 'C']
    a1 === a2; // true, a1和a2是同一对象

     


    (能行吗... )arr.reduce((x,y)=> (x+y))
    arr.map((x)=>(x*2));

    (可以吧... 关键是得带上参数, 不然这个x哪里来的~~ )

  • 相关阅读:
    算法总结之 两个链表生成相加链表
    算法总结之 复制含有随机指针节点的链表
    算法总结之 将单向链表按某值划分成左边小、中间相等、右边大的形式
    在PHP5.3以上版本运行ecshop和ecmall出现的问题及解决方案
    windows下配置nginx+php环境
    ecmall程序结构图与数据库表分析
    ecmall数据字典
    Ecmall二次开发-增删改查操作
    PHP7:10件事情你需要知道的
    PHP命名空间规则解析及高级功能3
  • 原文地址:https://www.cnblogs.com/lx2331/p/13413805.html
Copyright © 2011-2022 走看看