JavaScript基础知识

Stella981
• 阅读 481

题目:

1.找出数字数组中最大的元素(使用Math.max函数)

2.转化一个数字数组为function数组(每个function都弹出相应的数字)

3.给object数组进行排序(排序条件是每个元素对象的属性个数)

4.利用JavaScript打印出Fibonacci数(不使用全局变量)

5.实现如下语法的功能:var a = (5).plus(3).minus(6); //2

6.实现如下语法的功能:var a = add(2)(3)(4); //9

解答:

    var a = [10,1,2,3,4,8,9];

    function max(a){
        var len = a.length-1;
        var maxnum=a[len];
        while (len--) {
             maxnum=Math.max(maxnum,a[len])
        }
        return maxnum;
    }
    alert(max(a));

另解:

    function getArrMax(){
                    return Math.max.apply(null,a);
     }

2.  

    var getNumFun = [];
    function toFun(a){
        var len = a.length;
        while (len--) {
            (function(i){
                 getNumFun[i] = function(){
                     alert(a[i]);
                 }
             })(len);
        }
     }
     toFun(a);
     getNumFun[5]();
var objarr = [{a:2,b:1}, {d:5},{a:1,b:2,c:3} ];
function rule(o1,o2){
       var sizeObj = function(obj){
          var size=0;
          for(var i in obj) size++;
          return size;
       }
       return sizeObj(o1) - sizeObj(o2);
}
/*  objarr.sort(rule);
    console.log(objarr[0]);        */
    function Fib(n){
           if(n===1||n===2){return 1;}
           else return Fib(n-1)+Fib(n-2);
         }
    /*    console.log(Fib(10));   */
    Number.prototype.plus = function(x){
         return this+x;
    }
    Number.prototype.minus = function(x){
         return this-x;
    }
    /*    console.log((5).plus(3).minus(6));  */

6. 

    function add(num){
        var self = arguments.callee;
        /* alert(self);//undefined,5,13  ~~的作用*/
        num += ~~self;
        self.num = num;
        return self;
    }
    //valueOf是给运行和控制台用,toString是给alert用
    add.valueOf = add.toString = function(){return add.num};
    alert(add(5)(8)(6)); //19

注:

~~其实是一种利用符号进行的类型转换,转换成数字类型
~~true == 1
~~false == 0
~~"" == 0
~~[] == 0

~~undefined ==0
~~!undefined == 1
~~null == 0
~~!null == 1
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
2年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
LinMeng LinMeng
3年前
js 的 forEach,map,filter,some,every,find(es6),reduce详解
forEach()定义和用法forEach()方法用于调用数组的每个元素,并将元素传递给回调函数注意:forEach()对于空数组是不会执行回调函数的。语法array.forEach(function(currentValue,index,arr),thisValue)参数function(currentValue,index,a
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
2年前
这些JS工具函数够你用到2020年底了
前言活不多说,自己平时搜集的干货函数奉上。干货函数找出数字在数组中下一个相邻的元素let i  "";let rr  ;const name  (n, arr1)    let num  Number(n);    for (let i  0; i < arr1.length; i)         const elemen
Stella981 Stella981
2年前
JS 对象数组Array 根据对象object key的值排序sort,很风骚哦
有个js对象数组varary\{id:1,name:"b"},{id:2,name:"b"}\需求是根据name或者id的值来排序,这里有个风骚的函数函数定义:function keysrt(key,desc) {  return function(a,b){    return desc ? ~~(ak
Stella981 Stella981
2年前
HashMap 的底层实现原理
HashMap是一个用于存储KeyValue键值对的集合,每一个键值对也叫做Entry。这些个Entry分散存储在一个数组当中,这个数组就是HashMap的主干。HashMap数组每一个元素的初始值都是Null。 !(https://oscimg.oschina.net/oscnet/8495d30fe00a2865dd74088d2
Wesley13 Wesley13
2年前
ES6 新增的数组的方法
给定一个数组letlist\//wu:武力zhi:智力{id:1,name:'张飞',wu:97,zhi:10},{id:2,name:'诸葛亮',wu:55,zhi:99},{id:3,name:'赵云',wu:97,zhi:66},{id:4,na
达里尔 达里尔
3个月前
给数组添加新数据,判断数据是否重复
多选要进行数组拼接,希望判断往原数组里添的新数据是否重复,封装个简易方法languageconstdataArrayname:'aaa',id:1,name:'bbb',id:2;constnewDataname:'ccc',id:2;//要添加的新数