JavaScript练习笔记整理·4 - 6.26

基础练习(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:今天的状态很差,心态上有一些比较消极的情绪,所以做的练习也少了,笔记也少了一些。(懒惰)

时间: 2024-10-12 08:38:00

JavaScript练习笔记整理·4 - 6.26的相关文章

JavaScript练习笔记整理&#183;1 - 6.23

练习平台Codewars地址:https://www.codewars.com/ 欢迎和大家一起来讨论~╭( ???)? ?? 基础练习(1): 我的解答为: class SmallestIntegerFinder { findSmallestInt(args) { var a = args[0]; for(var i=0; i<args.length; i++){ if(args[i] <= a){ a = args[i]; } } return a; } } 较优解答为: class Sm

javascript学习笔记整理(数组)

数组是一个可以存储一组或是一系列相关数据的容器. 一.为什么要使用数组. a.为了解决大量相关数据的存储和使用的问题. b.模拟真是的世界. 二.如何创建数组 A.通过对象的方式来创建——var a=new Array(); 赋值方式: 1.直接赋值——var a=new Array(元素1,元素2,元素3,元素4,........) var a=new Array(数值)如果只有一个元素,并且这个元素是数值类型的,那么他就是指定数组的长度并且他的值都是undefined var a=new A

JavaScript学习笔记整理Day15

BOM浏览器对象模型 1.window 2.Location 3.History 4.Screen 5.Navigator 一.window window概述: 1.window是客户端JavaScript的全局对象 2.它表示web浏览器的一个窗口或窗体,并且用标识符window来引用 1.innerHeight 返回窗口的文档显示区高度 IE9以下不兼容 2.innerWidth 返回窗口的文档显示区宽度 IE9以下不兼容 解决方法: //获取窗口的宽高 var width = window

javascript学习笔记整理(事件)

一.事件驱动 1.事件javascript侦测到的用户的操作或是页面的一些行为(怎么发生的) 2.事件源引发事件的元素(发生在谁的身上) 3.事件处理程序对事件处理的程序或是函数 (发生了什么事) 二.事件的分类 1.鼠标事件 onclick 鼠标点击事件 ondblclick     鼠标双击事件 onmousedown     鼠标按下 onmouseup      鼠标松开 onmousemove       鼠标移动 onmouseover         鼠标移入 onmouseout

JavaScript学习笔记整理Day9

一.JavaScript定时器: 1.单次定时:setTimeout(fn,time); 2.多次定时:setInterval(timer); 3.停止单次定时:clearTimeout(timer); 4.停止多次定时:clearInterval(timer); 实例1:使用单次和多次定时写倒计时 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"&g

javascript学习笔记整理(函数)

javascript函数的声明和调用将完成某一特定功能的代码集合起来,可以重复使用的代码块. 一.函数的声明方式(创建) A.基本语法(function  关键字)function 函数名([参数1],[参数2]....){    函数体    [retrun]  //返回值} function a(){ alert(1) }; B.字面量定义的形式(匿名函数)var 变量=function ([参数1],[参数2]....){    函数体    [retrun]  //返回值} var a=

JavaScript练习笔记整理&#183;3 - 6.25

欢迎和大家一起来讨论~ 基础练习(1): 我的解答为: function array_diff(a, b) { if (b == "") return a; return a.filter(function(item,index,array) { var flag = false; for(var i=0;i<b.length;i++) { if(item !== b[i]) flag = true; } return flag; }); } 较优解答为: function ar

JavaScript学习笔记整理Day4

##函数 ####函数是一段在一起,可以做某件事的程序. ###优点:控制程序设计的复杂性 1. 提高软件的开发可靠性 2. 提高软件的开发效率 3. 提高软件的可维护性 4. 提高程序的重用性 ###JavaScript定义函数的方式 1. function 关键字  function demo(){ code..} 2. 匿名函数  var demo = function(){} 3. Function 构造函数   (不推荐使用) var demo = new Function('a','

JavaScript练习笔记整理&#183;2 - 6.24

Codewars地址:https://www.codewars.com/ 欢迎和大家一起来讨论~ 基础练习(1): 我的解答为: function isIsogram(str){ if(str == "") return true; return str.toLowerCase().split("").sort().every(function(item,index,array) { return item != array[index+1]; });; } 较优解