zoukankan      html  css  js  c++  java
  • code war 天天一练(1)

    Instruction:

    x Simple, given a string of words, return the length of the shortest word(s).

    String will never be empty and you do not need to account for different data types.

    根据描述,这里不要求判断是否为空和数据类型,所以就放心大胆的写出一段话中最短字体的长度了

    刚开始我是这么写的:

    1 function findShort(s){
    2   var arr = s.split(' ').map(function(t){return t.length});
    3   return Math.min.apply(null,arr);
    4 }

    这里主要还是在用ES6之前的代码写法,有4个知识点:

    1,string.split(' ')

        split() 方法用于把一个字符串分割成字符串数组。这个方法简单易懂,不赘述。

    2,Array.map()

        map()方法创建一个新数组,它会给原数组中的每个元素都按顺序调用一次callback函数,callback每次执行后的返回值形成一个新数组。

        参考链接:请点击这里

    3,Math.min()

        给定数值中最小的数。若任一参数不能转换为数值,则返回NaN。

        参考链接:请点击这里

    3,apply()

        在调用一个存在的函数时,你可以为其制定一个this对象。this指当前对象,也就是调用这个函数的对象。使用apply,可以只写一次这个方法然后在另一个对象中继承它,而不用在新对象中重复写该方法。

        参考链接:请点击这里

    后来参考了其他人的解决方法,codewar里多得是有牛人能用一行就能把功能写出来的,下面就是一种:

    1 function findShort(s){
    2   return Math.min(...s.split(' ').map(w=>w.length));
    3 }

    这里主要运用到了ES6的两个新的知识点,虽然之前也有学习过ES6,因为没有实操经验,在此复习一下:

    1,(...)是扩展运算符,在这里可替代数组的apply方法,用于展开数组,将数组转为函数的参数。

    // ES5的写法
    Math.min.apply(null, [14, 3, 77])
    // ES6的写法
    Math.min(...[14, 3, 77])
    // 等同于
    Math.min(14, 3, 77);

        参考链接:请点击这里

    2,箭头函数 (=>)

    var f = v => v;
    //等同于
    var f = function(v) {
      return v;
    };
    
    //如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。
    var f = () => 5;
    // 等同于
    var f = function () { return 5 };
    
    var sum = (num1, num2) => num1 + num2;
    // 等同于
    var sum = function(num1, num2) {
      return num1 + num2;
    };

    箭头函数使得表达更为简洁。

    详细了解请点击这里

    附:codewar-该习题练习地址

  • 相关阅读:
    java的锁机制
    视图生命周期
    UIButton @selector 想要传递多个参数
    UIButton @selector 想要传递多个参数
    UITableView 实现A1A2---Z1Z2.。。。。
    iOS 代理
    PickerView
    照片墙
    分栏控制器
    XIB 拖控件
  • 原文地址:https://www.cnblogs.com/gong-zhu/p/7054303.html
Copyright © 2011-2022 走看看