[[7 kyu]Substring fun](http://www.codewars.com/kata/substring-fun/javascript)

⌚️2016.02.22

问题描述:

![[7 kyu]Substring fun](http://ww1.sinaimg.cn/large/006m2mhTgw1f1pp26menxj31b80mgdjm.jpg)

验证方式:

题目理解:

函数nthChat处理一个参数,一个 字符串组。

你需要从第n个单词中取出对应的第n个字母来组合成一个新单词,并将其转化成字符串返回来。

注意:只测试合理的的输入——即字符串组和空组,每个单词也一定有其所在的数组的序号长度的字母。

我的解法

function nthChar(words){  
var newWord = '',        //1⃣️
    A_length=words.length;
if(A_length !== 0){    
  for(var i =0,n = A_length-1;i <= n;++i){
      var eachWord = [];
          eachWord = words[i].split(""); //2⃣️
         newWord = newWord + eachWord[i];
    }
   }
 return newWord
}

注解:

  1. 通过赋值 '' 避免 undifined 自动转换成 'undeifned', 干扰结果。
  2. 使用函数 split( , ) 能将 字符串 ,[按一定的规律]分割成[可设置数组长度的]数组。 w3s > split()

优解

  1. 优解一
  2. 优解二
  3. 优解三

知识点:

  1. const:

    • const 声明创建一个只读的常量。这不意味着常量指向的值不可变,而是变量标识符的值只能赋值一次。(译者注:JavaScript中的常量和Java,C++中的常量一个意思。注意区分常量的值和常量指向的值的不同)
    • const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];

      • nameN

        • 常量名称,可以是任意合法的identifier(标识符)。
      • valueN

        • 常量值,可以是任意合法的表达式。
    • Mozilla手册 > const
    • 深入学习const
  2. map()方法:

    • 把每个元素通过函数传递到当前匹配集合中,生成包含返回值的新的 jQuery 对象。
    • .map(callback(index,domElement))

      • callback(index,domElement)

        • 对当前集合中的每个元素调用的函数对象
    • jQuery遍历 > map()
  3. reduce()方法:

    • 接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。
    • arr.reduce(callback,[initialValue])

      • callback

        • 执行数组中每个值的函数,包含四个参数
        • previousValue

          • 上一次调用回调返回的值,或者是提供的初始值(initialValue)
          • currentValue

            • 数组中当前被处理的元素
          • index

            • 当前元素在数组中的索引
          • array

            • 调用 reduce 的数组
      • initialValue

        • 作为第一次调用 callback 的第一个参数。
    • Mozilla手册 > reduce()
  4. charAt()方法:

    • charAt() 方法返回字符串中指定位置的字符。
    • str.charAt(index)

      • index:

        • 0 到 字符串长度-1 的一个整数。
    • Mozilla手册 > charAt()
  5. join()方法:

    • join() 方法将数组中的所有元素连接成一个字符串。
    • str = arr.join([separator = ','])

      • separator:

        • 可选,用于指定连接每个数组元素的分隔符。分隔符会被转成字符串类型;
        • 如果省略的话,默认为一个逗号
        • 如果 seprator 是一个空字符串,那么数组中的所有元素将被直接连接
    • Mozilla手册 > join()
  6. "=>"表达式

    • 箭头函数就是个简写形式的函数表达式,箭头函数总是匿名的。
    • (param1, param2, …, paramN) => { statements }
    • (param1, param2, …, paramN) => expression

      • // equivalent to: => { return expression; }
    • // 如果只有一个参数,圆括号是可选的:

      • (singleParam) => { statements }
      • singleParam => { statements }
    • // 无参数的函数需要使用圆括号:

      • () => { statements }
    • Mozilla手册 >箭头函数表达式

引申

心得:

  • codewar好像可以用jQ诶。
  • 原来因为不懂基本都是因为不知道: 字符串 变量本身被当作数组调用时,会被当作数组处理而不动

RDDcoding
151 声望17 粉丝

一心一行