JS常见的小代码
一:去掉数组里面的重复项。
比如 如下一个数组:var arr = [1,2,4,3,4,3]; 我想要得到数组 [1,2,4,3].为这样的 写一个函数去掉重复的项。
var unique = function(arr){
arr = arr || [];
var obj = {},
newArray = [];
if(arr.length > 0){
for(var i = 0, len = arr.length; i < len; i+=1){
var curItem = arr[i],
itemTemp = typeof(curItem) + curItem;
if(obj[itemTemp] !== 1){
newArray.push(curItem);
obj[itemTemp] = 1;
}
}
}
return newArray;
};
二:返回数组里面的最大项:
比如需求如下 有个数组 var arr = [1,2,3,4,5]; 想返回数组里面的最大项。 我们只需要写如下函数即可:
var maxValue = function(arr){
arr = arr || [];
var i,
tempVal = 0;
for(i = 0, len = arr.length; i < len; i+=1){
var curVal = arr[i];
if(curVal > tempVal){
tempVal = curVal;
}
}
return tempVal;
};
三: 数组里面的项从小到大的排序问题.
有时候我们的需求要数组里面的数字从小到大排序问题,那么我们常见的方法有sort这个方法 可以使数字从小到大的排序 但是
用这个sort排序有个问题就是它根据ASCLL编码来排序的 比如数组[1,23,5],它排序后我们期望的是[1,5,23],但是它却返回了
[1,23,5],为什么呢?他首先计算2的ASCLL编码是50(因为1的ASCLL编码是49),5的ASCLL编码是53,所以50小于53.这是我们不
想要的结果。那么至于这种情况我们自己可以写个简单的函数来支持下:如下:
var compareNum = function(a,b){
if(a > b){
return 1;
}else if(a < b){
return -1;
}else {
return 0;
}
}
然后调用 数组.sort(compareNum);就ok了 但是我们有个更简单函数可以代替上面的函数:如下
数组.sort(function(a,b){
return a - b;
});
四:对象根据数组排序的问题。
有时候我们有这么样的一个需求 向服务器发一个请求 带参数 商品ID 数组传过去 但是后台返回一个数组 里面是以对象的形式存在
时候,由于后台开发人员懒的缘故,没有给我们排序,而我们前端需求是向服务器请求参数的顺序传过去 返回的后顺序和传过去一
样的顺序。
比如这么一个数组:var shopId = ['001','002','003','004']; 服务器返回的如下:
var callId = [{
'itemId': '003'
},
{
'itemId': '004'
},
{
'itemId': '002'
},
{
'itemId': '001'
}];
但是我是想返回的顺序是:
var callId = [{
'itemId': '001'
},
{
'itemId': '002'
},
{
'itemId': '003'
},
{
'itemId': '004'
}];
代码可以如下这样:
var sorting = function(shopId,callId){
var obj = {};
for(var i = 0, ilen = shopId.length; i < ilen; i+=1){
obj[shopId[i]] = i;
}
for(var j = 0, jlen = callId.length; j < jlen; j+=1){
var curItem = callId[j];
curItem._id = obj[curItem.itemId];
}
var compareId = callId.sort(function(a,b){
return a._id - b._id;
});
return compareId;
};
console.log(sorting(shopId,callId));
五: 如何获取当前 select 元素的值。
最近看到"怿飞" 的一篇很早的博客关于如何获取当前select元素的值得问题,感觉蛮好的 对以后工作也有帮助,所以打算收藏下:
- 如果 select 元素下的所有 option 元素均没有指定 selected 属性,会默认选中第一个。
- 可以通过
select.selectedIndex
获取到选中的 option 元素的索引。 - 可以通过
select.options[select.selectedIndex]
获取到选中的 option 元素。 - option 元素
<option selected="selected" value="value3">text3</option>
,可以通过 option.value 获得 option 元素的 value 属性值,即 value3;可以通过 option.text 获得 option 元素内的文本,即 text3。 - 如果 option 元素没有定义 value 属性,则 IE 中 option.value 无法获得,但 Safari、Opera、FireFox 依旧可以通过 option.value 获得,值同于 option.text 。
- 可以通过
option.attributes.value && option.attributes.value.specified
来判断 option 元素是否定义了 value 属性。 - 比如HTML代码如下:
- <select id="select">
<option value="11111">11111</option>
<option value="22222">22222</option>
<option value="33333">33333</option>
<option value='44444'>44444</option>
<option value='55555'>55555</option>
<option value='66666'>66666</option>
</select> - var getSelectValue = function(select) {
var idx = select.selectedIndex, //获取选中的option的索引
option,
value;
if(idx > -1) {
option = select.options[idx]; //获取选中的option元素
value = option.attributes.value;
return (value && value.specified) ? option.value : option.text;
}
return null;
};
var select = document.getElementById('select');
alert(getSelectValue(select));运行下就知道了。
JS常见的小代码的更多相关文章
- js——常见的小方法
1.随机得到是六位数,可以当做“密码”来使用: Math.random().toString().substr(2, 6):
- js一段小代码(浏览器用alert,否则用console)
(function(){ var root=this, isBrowserSide=false; if(typeof window !=="undefined" && ...
- 用Vue.js开发微信小程序:开源框架mpvue解析
前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...
- 折腾一两天,终于学会使用grunt压缩合并混淆JS脚本,小激动,特意记录一下+spm一点意外收获
很长时间没有更新博客了,实在是太忙啦...0.0 ,以下的东西纯粹是记录,不是我原创,放到收藏夹还担心不够,这个以后常用,想来想去,还是放到这里吧,,丢不了..最后一句废话,网上搜集也好原创也罢,能解 ...
- 【转】利用 three.js 开发微信小游戏的尝试
前言 这是一次利用 three.js 开发微信小游戏的尝试,并不能算作是教程,只能算是一篇笔记吧. 微信 WeChat 6.6.1 开始引入了微信小游戏,初期上线了一批质量相当不错的小游戏.我在查阅各 ...
- js 数组去重小技巧
js 数组去重小技巧 Intro 今天遇到一个问题,需要对数据进行去重,想看一下有没有什么比较方便的方法,果然有些收获. Question 问题描述: 我有一个这样的数据: [ { "Pro ...
- three.js 3d三维网页代码加密的实现方法
http://www.jiamisoft.com/blog/17827-three-js-3dsanweiwangyejiami.html https://www.html5tricks.com/ta ...
- JS实现页面分享代码share,不需要第三方接口
在开发一个页面的时候常常会有这么一个小功能,就是分享该页面中的信息. 常见的分享代码有百度分享,JiaThis分享插件(现在貌似不能用了),bshare分享插件等,我主要分享一下自定义分享代码,如下: ...
- MPVUE - 使用vue.js开发微信小程序
MPVUE - 使用vue.js开发微信小程序 什么是mpvue? mpvue 是美团点评前端团队开源的一款使用 Vue.js 开发微信小程序的前端框架.框架提供了完整的 Vue.js 开发体验,开发 ...
随机推荐
- 加快maven中jar包的下载速度,maven镜像收集
maven下载jar包的默认仓库是http://my.repository.com/repo/path速度较慢,通过配置国内镜像提高下载速度 1.打开eclipse--->Window---&g ...
- 为什么90%的CTO 都做不好绩效管理
十多年从业经历,从 2001 年开始带团队到现在,我几乎经历过所有的 IT 角色.2010 年,我随创始团队筹建国美在线至今,经历了从几百单到现在日均百万订单,从只有家电品类到现在全品类.金融.大 ...
- WebLogic 8的安装与配置详谈
本文主要是以windouw下32位的版本为例展开介绍,主要包括其安装与配置. 一.图形界面安装过程 1.双击安装程序server815_win32.exe,开始进行程序的安装. 2.点击Next按钮进 ...
- Java数据解析---PULL
安卓和JAVA解析xml文件的三种方式: 1.PULL解析 2.SAX解析 3.DOM解析 三者各有所长,依情况选择解析方式 1.PULL和SAX均采用流式解析,意味着只能从头读到底,无法像DOM解析 ...
- (网页)Java程序员们最常犯的10个错误(转)
转自CSDN: 1.将数组转化为列表 将数组转化为一个列表时,程序员们经常这样做: List<String> list = Arrays.asList(arr); Arrays.asLis ...
- flask中的url_for的使用
有多个路由的程序需要连接不同的网页链接,例如导航条 模板中构建正确的动态url较为困难,如果重定义路由,模板中的链接失效 url_for()函数: 使用url映射中保存的信息生成url 用法: 用视图 ...
- 对JavaScript中闭包的理解
在前端开发中闭包是一个很重要的知识点,是面试中一定会被问到的内容.之前我对闭包的理解主要是"通过闭包可以在函数外部能访问到函数内部的变量",对闭包运用的也很少,甚至自己写过闭包自己 ...
- vue.js的安装
使用nodejs安装Vue-cli 1.安装完成node,node有自带的npm,可以直接在cmd中,找到nodeJs安装的路径下,进行命令行全局安装vue-cli.(npm install --gl ...
- sqlserver序列定时初始化
1.创建序列 2.序列初始化存储过程 create procedure proDemo as begin alter sequence dbo.序列名 restart with 0; end 3.创建 ...
- 修改Devexpress DateEdit控件默认的日期格式和日历风格
最近项目中很多地方使用到DevExpress的DateEdit控件,而且设置都是一致(日期格式.选择日期的日历的风格等).每一次都需要设置太痛苦,因此需要寻找一种高效的解决方式. 一. 设置好一个作为 ...