javascript的一些算法的实用小技巧
一、交换两个数字的值
我们交换两个数字的值想到的方法一般就是用一个新的变变量,让他把一个数存起来,然后在交换两个数字的值,看下面这种。
var a = 1,
b = 2;
//交换两个数字的值
var c;
c = a;
a = b;
b = c;
看下面这段代码,也可以交换两个数字的值,如果这样写你会不会发现特别高大上。
var a = 1,
b = 2;
a = [b, b = a][0];
这里其实是a = [][0]数组下标为0的那个,然后 b = a; 这样也可以交换两个数字的值了。
二、数组的排序
1.数组方法中的sort排序方法。
var a = [9,8,8,6,1,2,4,56];
a.sort(function(a,b){
return a - b;//由小到大排序
})
console.log(a)
这是数组方法中的sort排序方法,如果return b - a; 就是由大到小排序,其中的原理是什么呢,其实就是冒泡排序法
2.冒泡排序法 (由小到大排列)
var a = [9,8,7,6,5,4,3,2,1];
for(var i=0; i<a.length-1; i++){
for(var j=0; j<a.length-i; j++){
if(a[j]>a[j+1])
a[j] = [a[j+1], a[j+1]=a[j]][0];
}
}
console.log(a)
3.选择升序法(由小到大排列)
var a = [9,8,7,5,6,4,1,3,1];
for(var i=0; i<a.length-1; i++){
for(var j=i+1; j<a.length; j++){
if(a[i]>a[j])
a[i] = [a[j],a[j]=a[i]][0];
}
}
console.log(a)
三、for in 循环 遍历json
我学习for in循环的时候是在学json的时候学到的,看下面这段代码。
1.for in循环遍历出json里面所有的属性名
var json = {
a : 1,
b : 2,
nam : 'Z',
clas2 : '我们的'
}
for(var i in json){
console.log(i)
}
2.我们打印出来的i会是json里面所有的属性名,那么他是怎么循环的呢,我当时一直不太清楚,你尝试一下下面这段代码看一下效果。
var json = {
a : 1,
b : 2,
nam : 'Z',
clas2 : '我们的'
}
for(var i in json);
console.log(i)
我们在for in 循环的这一行给了一个分号结束语句,然后打印出来i我们会发现他是class2,现在你大概明白了吧,每一次循环这个i代表的就是json本次循环得到的属性名,他不是代表的一个数组,而是代表一个值。
3.for in 循环遍历出json里面所有的值
var json = {
a : 1,
b : 2,
nam : 'Z',
clas2 : '我们的'
}
for(var i in json){
console.log(json[i])
}
四、for in循环遍历数组
var a = [1,2,5,6,777,6,21];
for(var i in a){
console.log(i) //这里打印出来的是所有的下标
console.log(a[i]) //这里打印出来的是数组里面所有的值
}
五、遍历json属性到数组
1.这个里面用到的是每一次用数组的长度来代表他的下标,然后将json里面的属性名遍历到a数组中。
var json = {
a : 1,
b : 111,
nam : 'z',
clas2 : 1
}
var a = [];
for(a[a.length] in json);
console.log(a)
2.遍历json的属性的值到数组中
var json = {
a : 1,
b : 111,
nam : 'z',
clas2 : 1
}
var a = [];
for(var i in json){
a[a.length] = json[i];
}
console.log(a)
六、判断浏览器是不是IE678
if(!-[1,]){
alert('这是ie678');
}
说出来你可能不信,
原理
1. 请你试一下 alert([1,2,].length)浏览器中弹窗的数字是多少
谷歌 火狐 一些的弹窗都是2,所以后面的那个逗号浏览器判断是不算的
但是在IE6 7 8 中弹窗出的数字是 3 ,
所以Number( [1,])这个东西在谷歌,火狐的眼中就是1,但是在IE678心中他就是NaN
2. 前面的 - 号 隐式转换为Number型
3 取反 判断内的值为true,所以可以在这里面判断成。
如果你看到我的文章可以收获一些知识,那么我会非常高兴的。
javascript的一些算法的实用小技巧的更多相关文章
- PHP 常用函数库和一些实用小技巧
PHP 常用函数库和一些实用小技巧 作者: 字体:[增加 减小] 类型:转载 包括文件读取函式,文件写入函式,静态页面生成函式,目录删除函式等 文件读取函式 //文件读取函式 function ...
- Vim实用小技巧
Vim实用小技巧 一些网络上质量较高的Vim资料 从我07年接触Vim以来,已经过去了8个年头,期间看过很多的Vim文章,我自己觉得非常不错,而且创作时间也比较近的文章有如下这些. Vim入门 目前为 ...
- svn checkout 实用小技巧
svn checkout 实用小技巧 by:授客 QQ:1033553122 问题描述: 用svn小乌龟软件,进行update,commit之前,先要把svn工作目录checkout到本地,那么问 ...
- 实用小技巧(一):UIScrollView中上下左右滚动方向的判断
https://www.jianshu.com/p/93e8459b6dae 2017.06.01 01:13* 字数 674 阅读 1201评论 0喜欢 1 2017.06.01 01:13* 字数 ...
- 【前端】javascript中10常用的个小技巧总结
javascript中10常用的个小技巧总结 本文转自:http://www.cnblogs.com/libin-1/p/6756393.html 1. new Set() 可能有人知道ES6中提供了 ...
- javascript的40个网页常用小技巧
下面是javascript的40个网页常用小技巧,对网站开发人员相信会有帮助.1. oncontextmenu="window.event.returnValue=false" 将 ...
- VC6.0实用小技巧
VC6.0的若干实用小技巧 .检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}.方括号[].圆括号()和尖括号<>)前面,键入快捷键 “Ctrl+]”.如果括号匹配正确, ...
- 必看!macOS进阶不得不知的实用小技巧
不知道大家对使用苹果电脑的体验如何?您充分利用您的mac了吗?其实macOS上存在着许多快捷方式和技巧可以帮助简化我们的工作流程,提高效率,但是在日常生活中经常被人们忽略或者遗忘.以下是macdown ...
- 实用小技巧:Notepad++直接连接Linux
实用小技巧:Notepad++直接连接Linux 前言 号称编辑器之神的Vim对于只会用几个基础操作的本人而言,在编辑一些大型文本有那么些力不从心: 平时都是通过Xftp拖到本地,修改完后再覆盖回去: ...
随机推荐
- webservice04#对象与xml转换-jaxb#Stax解析xml#新建修改xml
1,Student类 package com.yangw.xml; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement / ...
- 在ZABBIX平台上通过SNMP协议监控网络设备
在ZABBIX平台上通过SNMP协议监控网络设备 方法一:自动发现监控项 ZABBIX自带模板Template SNMP Interfaces中有"自动发现规则"这一选项,在主机选 ...
- MySql Jar 包下载
MySql JAR 包下载 我们要使用Spring 链接MySql 需要两个Jar 包 一个是C3p0 一个是MySql 的Connection Jar 包 C3p0: 进入下面的网址 h ...
- MyEclipse/Eclipse 使用图文详解
引言 某天在群里看到有小伙伴问MyEclipse/Eclipse的一些使用问题,虽然在我看来,问的问题很简单,但是如果对于刚刚学习的人来说,可能使用就不那么友好了.毕竟我在开始使用MyEclipse/ ...
- node.js的generic-pool与mysql结合,mysql连接池
var generic_pool = require('generic-pool'); var pool = generic_pool.Pool({ name: 'mysql', ma ...
- GCD之异步同步体会
前面的博文也有写到同步异步,可能是看他人的博文,自己没有实验,感觉理解不深,所以就敲了些代码比较一下串行.并行分别对应的同步.异步. 1.首先创建串行.并行线程队列 1 2 dispatch_queu ...
- Postman 串行传参和动态传参详解
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 用Postman做接口测试的时候,要把多条用例一起执行,就需要把用例连接起来,一次性执行 目录 串行传参 动态传参 使用 ...
- 洗礼灵魂,修炼python(3)--从一个简单的print代码揭露编码问题,运行原理和语法习惯
前期工作已经准备好后,可以打开IDE编辑器了,你可以选择python自带的IDLE,也可以选择第三方的,这里我使用pycharm--一个专门为python而生的IDE 按照惯例,第一个python代码 ...
- 翻译:MLAPP(2.2节 概率论简要回顾)
笔者:尝试翻译MLAPP(Machine Learning: a Probabilistic Perspective)一书,供机器学习的学者参考,如有错误理解之处请指出,不胜感激!(如需转载,请联系本 ...
- 每周分享之 二 http协议(3)
本次分享http协议,共分为三部分,这是第三部分,主要讲解一个完整的http请求都经过哪些步骤,当我们在地址栏中输入网址,到返回页面都经历了什么 1.输入网址 当我们在浏览器中输入网址的时候,浏览器就 ...