js—浅谈方法和思路的重要性

  学了这么久的js,我从老师的,同学的代码中发现,老师写的代码比我们的要清楚的很多,基本上没有太多累赘啊,能少的没有少啊等等。。。。。

  废话不多说,下面我们来看看这个我的一个练习:

    将var a=['a','a','b','a','b','b','c','c','a','b','c','a','a','a','c','a','a','d','d','d','d','a','c'];中的字串出现的次数以json格式输出json{a:1,b:2,c:2}

  

 var a=['a','a','a','b','b','c','c','c','c','a','b','c'];
var josn={a:0,b:0,c:0};//直接声明json 存储次数
a.forEach(function(val,index){//遍历数组
if(val=="a"){ //判断值
josn.a ++; //将这个字串的次数累加 下同
}else if(val=="b"){
josn.b ++;
}else if(val=="c"){
josn.c ++;
}
});
console.log(josn); //打印json

上面的就是我自己敲的,相信大家都看出来了。‘嗯。。。代码很好没有问题,很符合题意’╮(╯_╰)╭

来下面看看老司机的代码

     var a = ['a','a','a','b','b','c','c','c','c','d','hha','niha'];
var s = '';
var json = {};// 声明数组,json,字符串
a.forEach(function(val,index){//遍历数组
if(s!=val){ //第一步将不同的字串提取出来
s = val;
}
json[s]?json[s]++:(json[s]=1);//判断该json有没有该值,如果有该键名则将次数+1;没有则存储起来并将键值赋值为1
})
console.log(json)

当时我看了觉得老司机不愧为老司机,小子甘拜下风。相信大家都看出来了,我自己写了代码相比之下似乎繁琐了许多,而且还有一定的局限性,就只能添加我所写的那些,若是数据一旦多了相比就是相形见绌了,可见思路和方法是有多么的重要。

古人云:学而不思则罔,思而不学则殆;学而时习之,不亦乐乎。因此,学习贵在思考和反复地温习。一味盲目的死学,是永远也得不到进步和提高的,唯一能够的得到的是在原地停滞不前,甚至倒退。思考者会积极的活在自己用心创造的美好世界,而懒惰者只会活在别人所创造出来的世界里,局限于他人所描述的时间和空间里停止不前。勤于思考的人,不会在书海中迷路,能在浩瀚的书海中寻找读书的乐趣和方法,而乐此不彼;知识的海洋是无穷无尽的,而人的记忆量总是有限的,它会随着时间的逝去而逐渐忘记以往的知识。只有“学而时习之”,温故才会知新。学习是一件很快乐的事。我们应该学着去享受它,而不应该处处排挤它。你对学习是怎么样的态度,那么学习对你也就是什么样的态度。

来自一名前端小菜的自诉(第一次不喜勿喷,欢迎大家给意见)

js—浅谈方法和思路的重要性(首篇求大佬支持)的更多相关文章

  1. salesforce lightning零基础学习(十) Aura Js 浅谈三: $A、Action、Util篇

    前两篇分别介绍了Component类以及Event类,此篇将会说一下 $A , Action以及 Util.  一. Action Action类通常用于和apex后台交互,设置参数,调用后台以及对结 ...

  2. 浅谈.Net异步编程的前世今生----APM篇

    前言 在.Net程序开发过程中,我们经常会遇到如下场景: 编写WinForm程序客户端,需要查询数据库获取数据,于是我们根据需求写好了代码后,点击查询,发现界面卡死,无法响应.经过调试,发现查询数据库 ...

  3. 浅谈.Net异步编程的前世今生----EAP篇

    前言 在上一篇博文中,我们提到了APM模型实现异步编程的模式,通过使用APM模型,可以简化.Net中编写异步程序的方式,但APM模型本身依然存在一些缺点,如无法得知操作进度,不能取消异步操作等. 针对 ...

  4. salesforce lightning零基础学习(八) Aura Js 浅谈一: Component篇

    我们在开发lightning的时候,常常会在controller.js中写 component.get('v.label'), component.set('v.label','xxValue'); ...

  5. salesforce lightning零基础学习(九) Aura Js 浅谈二: Event篇

    上一篇介绍了Aura Framework中 Component类的部分方法,本篇将要介绍Event常用的方法. 1. setParam (String key , Object value):设置事件 ...

  6. Angular.js浅谈

    至今博主对于MVVM框架比较了解的就只能算有Angular了,首先给大家明确一个概念,Angular1.x才能叫Angular.js,而Angular2.4.5都直接叫Angular了,因为从2开始已 ...

  7. node.js浅谈

    相信大家对node.js也很不陌生吧,现在我来总结一下常用的吧~ 我们Web全栈工程师最多的就是用Node作为后台了,Node.js虽然可以作为后台语言,但是相对于Java那些老牌后台语言真是一点优势 ...

  8. JS浅谈原始值与引用值操作

    值的操作分为三大类:复制,传递,比较 一:复制 原始值 let a = 10; let b = a; 注释:2018-7-30 17:33:49 1 原始类型的值都是存放在栈内存当中,所以他们的赋值操 ...

  9. JS 浅谈函数柯里化,不明觉厉

    在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术.这个技术由 Christopher ...

随机推荐

  1. [转载]转载一篇好文章作为Java与面向对象之随感(3)

    关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里,总觉得基本概念很模糊.后来才知道,在许多Java书中,把对象和对象的引用混为一谈.可是,如果我分不清对象与对象引用, 那实在没法很 ...

  2. 这个demo是为解决IQKeyboardManager和Masonry同时使用时,导航栏上移和make.right失效的问题

    原文链接在我的个人博客主页 (一).引言: 在 IQKeyboardManager 和 Masonry 同时使用时,导航栏上移和make.right失效等问题多多. 其实我们完美的效果应该是这样的:* ...

  3. 修改Gradle 和Maven本地仓库的位置 方法

    关于Maven的配置: 用过Maven的兄弟应该知道Maven可以通过配置 conf文件夹下面的settings.xml文件来修改maven下载的包,默认是下在c盘的用户文件夹下的.m2中,日积月累. ...

  4. MySQL两个最简单的delimiter的使用demo

    今天复习MySQL,使用的工具是Navicat for MySQL,写了两个简单的delimiter的demo. 第一个,获取当前时间的年月日时分秒格式的时间: delimiter $$ drop f ...

  5. JQuery处理DOM元素-属性操作

    JQuery处理DOM元素-属性操作 //操作元素的属性: $('*').each(function(n){ this.id = this.tagName + n; }) //获取属性值: $('') ...

  6. Spring Boot 中如何使用 Dubbo Activate 扩展点

    摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 公司的核心竞争力在于创新 – <启示录> 』 继续上一篇:< Spri ...

  7. Jmeter自动化测试工具的简单使用--HTTP测试

    Jmeter自动化测试工具的简单应用 1.安装Jmeter 链接: https://pan.baidu.com/s/1mhSzU68 密码: 446z   到这里下载 1.1 jmeter 将下载好的 ...

  8. 对百度WebUploader的二次封装,精简前端代码之图片预览上传(两句代码搞定上传)

    前言 本篇文章上一篇: 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传) 此篇是在上面的基础上扩展出来专门上传图片的控件封装. 首先我们看看效果: 正文 使用方式同 ...

  9. Let's Encrypt: 为CentOS/RHEL 7下的nginx安装https支持-具体案例

    环境说明: centos 7 nginx 1.10.2 前期准备 软件安装 yum install -y epel-release yum install -y certbot 创建目录及链接 方法1 ...

  10. zabbix主动上报的python脚本

    本代码linux.window平台通用. 不过我遇到一个Windows2008缺少运行库的提示,可能这个是Python3.6开发的.需要安装vc2015运行库吧.我没调试成功. linux平台还可以监 ...