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哪里来的~~ )

 

posted @ 2020-08-01 10:57  send/me/a/cat  阅读(298)  评论(0编辑  收藏  举报