var方法

JS数组去重的几种方法

回眸只為那壹抹淺笑 提交于 2020-01-31 05:22:11
朋友们,起风了,该 “浪” 起来了。 今天带大家 “浪” 的主题是 js的数组去重 ,总结了几种方法如下,希望有所帮助,希望同行之间的交流,更希望有大神批评指点!!! 方法1:利用ES6的 Set 结合 Array.from 去重       var arr = [5,6,8,8,6,8,6];       var set = new Set(arr); //Set()它类似于数组(伪数组),但是成员的值都是唯一的,没有重复的值。       console.log(Array.from(set)) //Array.from()将一个类数组对象或者可遍历对象转换成一个真正的数组。 方法二:利用ES5中的 Index.Of() 方法       function noRepeat(arr){ var newArr = []; for(var i in arr){ if(newArr.indexOf(arr[i]) == -1){ //arr中的值在newArr中不存在就返回 -1 newArr.push(arr[i]); } } return newArr; } 方法三:利用数组中 filter 方法      var arr = [5,6,8,8,6,8,6];   var newArr = arr.filter((items,index,arry)=>{ //按照某个条件过滤

再谈 javascript 数组去重

我们两清 提交于 2020-01-31 03:54:08
前言 数组去重方法老生常谈,既然是常谈,我也来谈谈 双层循环 也许我们首先想到的是使用 indexOf 来循环判断一遍,但在这个方法之前,让我们先看看最原始的方法: var array = [1,1,'1','1']; function unique(array) { var res = []; for(var i = 0, arrayLen = array.length; i < arrayLen; i++) { for(var j = 0, resLen = res.length; j < resLen; j++) { if(array[i] === res[j]) { break; } } // 如果 array[i] 是唯一的,那么执行完循环, j 等于 resLen if(j === resLen) { res.push(array[i]) } } return res } console.log(unique(array)) // [1, '1'] 在这个方法中,我们使用循环嵌套,最外层循环 array, 里面循环 res, 如果 array[i]的值跟 res[j] 的值相等,就跳出循环,如果都不等于,说明元素是唯一的,这时候j的值就会等于 res 的长度,根据这个特点进行判断,将值添加进 res。 看起来很简单吧,之所以要讲一讲这个方法,是因为兼容性好。

jQuery最佳实践

白昼怎懂夜的黑 提交于 2020-01-31 02:42:40
上周,我整理了 《jQuery设计思想》 。 那篇文章是一篇入门教程,从设计思想的角度,讲解 "怎么使用jQuery" 。今天的文章则是更进一步,讲解 "如何用好jQuery" 。 我主要参考了Addy Osmani的PPT 《提高jQuery性能的诀窍》 (jQuery Proven Performance Tips And Tricks)。他是jQuery开发团队的成员,具有一定的权威性,提出的结论都有测试数据支持,非常有价值。 ============================================== jQuery最佳实践 阮一峰 整理 1. 使用最新版本的jQuery jQuery的版本更新很快,你应该总是使用最新的版本。因为新版本会改进性能,还有很多新功能。 下面就来看看,不同版本的jQuery性能差异有多大。这里是三条最常见的jQuery选择语句:   $('.elem')   $('.elem', context)   context.find('.elem') 我们用1.4.2、1.4.4、1.6.2三个版本的jQuery 测试 ,看看浏览器在1秒内能够执行多少次。结果如下: 可以看到,1.6.2版本的运行次数,远远超过两个老版本。尤其是第一条语句,性能有数倍的提高。 其他语句的测试,比如 .attr("value") 和 .val()

javascript清空数组的三种方法

↘锁芯ラ 提交于 2020-01-31 00:21:25
javascript清空数组的三种方法,前两种思路来自snandy ,最后一种是自己在项目中使用的方法 var arr = [1,2,3,4]; 第一种 arr = []; 第二种 arr.length = 0; 第三种 arr.splice(0,arr.length); 就效率而言第一种最高,其实就是重新初始化数组了。 但有一个问题   var arr = [1,2,3];   var arr2 = arr;   arr = []; 则 arr2 的值仍为 [1,2,3];   第二种效率也比较高 第三种速度最慢 来源: https://www.cnblogs.com/chentao5211314/archive/2011/04/05/2005513.html

数组去重的方法

回眸只為那壹抹淺笑 提交于 2020-01-31 00:11:15
一、数组遍历法 var arr=[10,2,2,3,4,5,3] var newArr=[]; for(var i=0;i<arr.length;i++){ if(newarr.indexof(arr[i]===-1){ newArr[i].push(arr[i]) } } 二、数组下标判断法 var arr = [ 2 , 8 , 5 , 0 , 5 , 2 , 6 , 7 , 2 ] var newArr = [ ] for ( var i = 0 ; i < arr .length ; i ++ ) { if (arr . indexOf (arr [i ] ) === i ) { newArr . push (arr [i ] ) } } 三、 排序后相邻去除法 var arr = [ 2 , 8 , 5 , 0 , 5 , 2 , 6 , 7 , 2 ] arr . sort ( ) var newArr = [arr [ 0 ] ] for ( var i = 1 ; i < arr .length ; i ++ ) { if (arr [i ] !== newArr [newArr .length - 1 ] ) { newArr . push (arr [i ] ) } } console . log (newArr ) 来源: https://www

js-数组去重的方法

家住魔仙堡 提交于 2020-01-31 00:00:49
在js中我们想对数组中对于数字重复的值进行操作只显示一个,就分享几个方法 1、数组的indexOf()方法 <script> (function () { var box = document.getElementById('box'); var arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7]; norepeat(arr); function norepeat(arr) { var arr1 = [];//声明一个空数组来存放去重之后的数组 arr1 = arr.filter(function (item) { if (arr1.indexOf(item) == -1) { return arr1.push(item); } }) console.log(arr1); } })(); </script> 2、用数组includes()方法(比indexOf()方便) function norepeat2(arr) { //arr是要去重的数组 var newarr = [];//准备用来存放去重之后的数据 arr.forEach(function (item) { if (!newarr.includes(item)) {//1 2 1 2 3 4 //不包含 newarr.push(item);//1 2 3 4 } });

javascript Array扩展

六眼飞鱼酱① 提交于 2020-01-30 15:05:09
最近看了一下developer.mozilla.org里的东西,发现它为Array对象添加了不少generic method,赶得上Prototype的热心程度。 indexOf 返回元素在数组的索引,没有则返回-1。与string的indexOf方法差不多。 如果其他浏览器没有实现此方法,可以用以下代码实现兼容: //09,12,11新修正 Array.prototype.indexOf=function(item, index) { var n = this.length, i = index == null ? 0 : index < 0 ? Math.max(0, n + index) : index; for (; i < n; i++) if (i in this && this[i] === item) return i; return -1 } var array = [2, 5, 9]; var index = array.indexOf(2); // index is 0 index = array.indexOf(7); // index is -1 lastIndexOf 与string的lastIndexOf方法差不多。 如果其他浏览器没有实现此方法,可以用以下代码实现兼容: //09,12,11新修正 Array.prototype

bind 方法实现

会有一股神秘感。 提交于 2020-01-30 11:01:32
【要求】:实现 bind 方法 【实现】: // 简单方法 Function.prototype.bind = Function.prototpe.bind || function(context) { var me = this; return function() { return me.apply(context, arguments); } } // 考虑柯里化的情况,更加健壮的 bind() Function.prototype.bind = function(context) { var args = Array.prototype.slice.call(arguments, 1), me = this; return function() { var innerArgs = Array.prototype.slice.call(arguments), finalArgs = args.concat(innerArgs); return me.apply(context, finalArgs); } } ☂ 参考: Javascript中bind()方法的使用与实现 来源: https://www.cnblogs.com/Ruth92/p/5879899.html

前端解决跨域的九种方法

谁都会走 提交于 2020-01-29 05:47:56
什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。 广义的跨域: 1、 资源跳转:A链接、重定向、表单提交 2、 资源嵌入: <link>、<script>、<img>、<frame>等dom标签,还有样式中background:url()、@font-face()等文件外链 3、 脚本请求: js发起的ajax请求、dom和js对象的跨域操作等 其实我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。 什么是同源策略? 同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。 同源策略限制以下几种行为: 1、Cookie、LocalStorage 和 IndexDB 无法读取 2、 DOM 和 Js对象无法获得 3、 AJAX 请求不能发送 常见跨域场景 URL 说明 是否允许通信 http://www.demo.com/a.js http://www.demo.com/b.js 同一域名,不同文件或路径 允许 http://www.demo.com/lab/c.js http://www

JS-DOM Element方法和属性

有些话、适合烂在心里 提交于 2020-01-28 07:34:53
JS-DOM Element方法和属性 S -DOM Element 方法和 属性 一,获取html元素 1.getElementByID(id) 通过对元素的ID访问,这是DOM一个基础的访问页面元素的方法. example: <div id="divid">测试</div> <script language="javascript"> var div=document.getElementByID("divid"); alert (div.nodeName); //显示元素名 </script> 如果id在元素中不是唯一的,那么获得的将是第一个ID. 2.getElementsByName(name) 仅用于input radio checkbox等元素,返回名字为name的元素数组 example: <div name="george"></div> <input name="george"></div> <script language=javascript> var ge=document.getElementsByName("george"); alert (georges.length); //获取georges个数,对div唔效果 </script> 3.getElementsByTagName(tagname) 返回具有tagname的元素列表数组