1. 程式人生 > >JavaScript練習筆記整理·4 - 6.26

JavaScript練習筆記整理·4 - 6.26

math 參數表 兩個 接收 strong middle 沒有 [] 判斷

基礎練習(1):

技術分享

技術分享

我的解答為:
function getMiddle(s) {
  if(s.length%2 == 0) {
    return s.charAt(s.length/2-1)+s.charAt(s.length/2);
  } else {
    return s.charAt(s.length/2);
  }
}

較優解答為:

function getMiddle(s)
{
  return s.substr(Math.ceil(s.length / 2 - 1), s.length % 2 === 0 ? 2 : 1);
}

分析: 我的做法是先判斷字符串的長度,根據長度來選擇需要返回的字符。而較優解中使用了substr()方法、Math.ceil()方法以及一個三元運算符。substr()方法可以創建新字符串、Math.ceil()方法用於對一個數進行上舍入。
筆記: charAt()方法,是用於訪問字符串中特定字符的方法,以單字符字符串的形式返回給定位置的那個字符,接收一個參數,即基於0的字符位置。 substr()方法,是基於自字符串創建新字符串的方法,返回被操作字符串的一個子字符串,且接收一或兩個參數,第一個參數指定子字符串的開始位置,第二個參數表示子字符串到哪裏結束。substr()的第二個參數指定的是返回的字符個數。若沒有傳遞第二個參數,則將字符串的末尾作為結束位置。對原字符串沒用影響。

基礎練習(2):

技術分享

技術分享

我的解答為:
var uniqueInOrder=function(iterable){
  var newarr = [];
  
for(var i=0;i<iterable.length;i++) { if(iterable[i] !== iterable[i+1]) { newarr.push(iterable[i]); } } return newarr; }

較優解答一:

function uniqueInOrder(it) {
  var result = []
  var last
 
  for (var i = 0; i < it.length; i++) {
    if (it[i] !== last) {
      result.push(last 
= it[i]) } } return result }

較優解答二:

var uniqueInOrder = function (iterable)
{
  return [ ].filter.call(iterable, (function (a, i) { return iterable[i - 1] !== a }));
}

分析: 我的思路是基於當前字符串的判斷,判斷每一位與其下一位是否相等,若相等,則添加到新數組中。而較優解中則是,先設定新數組中一個值作為判定基礎,若是字符串中與數組中的值不相等,則添加到新數組中。
PS:今天的狀態很差,心態上有一些比較消極的情緒,所以做的練習也少了,筆記也少了一些。(懶惰)

JavaScript練習筆記整理·4 - 6.26