js小知识-数组去重】的更多相关文章

查看zepto源码时,看到它的数组去重写法非常简单.下面是代码 var uq = function(array){ return [].filter.call(array,function(item,idx){ return array.indexOf(item) == idx }) }uq([1,3,5,1,2,5])输出: [1,3,5,2] 这里用到了array filter方法. 下面再简单介绍一下 filter方法的使用. filter() 方法创建一个新数组, 其包含通过所提供函数实…
前面说了说了js的相关知识,基本上除了语法外,把项目常用的知识做了一个梳理,现在说下js的其它方面的知识,这些知识不成体系,属于不理解对于一般开发没什么太多影响,但如果理解清楚,可以更好去开发. js解析引擎: 引擎的定义: 什么是js解析引擎?简单的说是就能够读懂javascript代码的的平台,如你写一段代码 var a=1;var b=1;var c=a+b;引擎做的事情就这一段代码执行成我们想要的结果,这就是引擎要做的事情. 上面据说的和C/C中的编译过程很像,但是js和C/C有所不同,…
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script type="text/javascript"> /***冒泡排序法***/ var arrSort = [20,30,10,40,0]; function sortarr(arr…
今天,在聊天群里看到数组去重的话题,面试者的答案如下: 参考答案如下: 程序员思维,做出如下测试: 未考虑到:1,‘1’是不同的,应该不去重 未考虑到对象 所以,参考答案只能去重基础类型 根据以往看过的文章,基础去重采用es6语法可以这么写. 现在的面试题,挺考验一个人的能力的,算法思路.知识面等等. 这个和问复制对象回答 JSON.parse(JSON.stringify(xxx)),问排序回答 sort 有点接近. 作为一名技术人员,特别是技术更新迭代较快的时代,阅读,思考,实践,是必不可少…
JS的连续赋值和曾经出现的怪异情况 let a=1; let b=a=3; 如上的真实赋值过程 => a=1 => a=3 => b=3 => 一般来说,等号是从右向左赋值的 于是问题来了 var a={n:1}; var b=a; a.x=a={n:2}; console.log(a) // {n:2} console.log(b) // {n:1,x:{n:2}} console.log(a.x) // undefined console.log(b.x) // {n:2} a…
1.递归例子<script type="text/javascript"> function test(num) { if(num < 0) { return; } console.log('递归算法'); test(num - 1); } test(8); //打印九次 递归算法: </script> 2.递归求和 1-100<script type="text/javascript"> function Sum(num)…
1.冒泡排序 <script>//声明一个数组 var arr=[1,88,66,22,35,65,4,52];//自执行函数 (function maopao(){ for(var i=0;i<arr.length;i++){ for(var j=0;j<arr.length-i;j++){ if(arr[j]>arr[j+1]){ var tmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } } } })(); document.wri…
一.js整数的操作 使用|0和~~可以将浮点转成整型且效率方面要比同类的parseInt,Math.round 要快,在处理像素及动画位移等效果的时候会很有用.性能比较见此. var foo = (12.4 / 4.13) | 0;//结果为3 var bar = ~~(12.4 / 4.13);//结果为3 还有一个小技巧,就是!!2个叹号,可以讲一个值,快速转化为布尔值.你可以测试一下! var eee="eee"; alert(!!eee) 返回的是true,也就是说任何一个值前…
向数组结尾添加元素高效方法: var arr = [1,2,3]; arr[arr.length] = 4 头部: var a = [1,2,3]; a.concat(4,5); // 1,2,3,4,5 中间: splice(index,howmany,arr1,arr2,...); //index插入的位置,howmany删除数量,arr1...添加项目 检测对象是否存在属性: hasOwnPrototype :只在本身有此属性时返回 true in :不区分属性来自自身还是继承自原型 严格…
以 var arr = [1,2,3,1]; 作为测试用例 方法一:双循环   (时间复杂度比较高,性能一般.) A.(1) function unique(arr) { var newArr = []; var len = arr.length; var isRepeat; for(var i=0; i<len; i++) { //第一次循环 isRepeat = false; for(var j=i+1; j<len; j++) { //第二次循环 if(arr[i] === arr[j]…