js里的实用小技巧
1.数组去重
说到数组去重肯定,你脑海里闪过很多的方法,但是往往这些的时间复杂度都是偏高的,比较不合理的
这里介绍用indexOf()来去重,就很实用
var arr=[1,2,3,2,21,1,2,4,1,2]; var newarr=[]; for (var i=0;i<arr.length;i++) { if(newarr.indexOf(arr[i])===-1){ if(typeof(arr[i])=='number'){ newarr.push(arr[i]); } } } console.log(newarr);
2.说到循环,一个优秀的开发真的不能仅仅想到for循环,因为有的时候操作for循环也会有不便的时候
对于对象循环,用for...in比较好,两种比较
var obj={ s:123, osa:'asdasd', as:'666', } for(o in obj){ console.log(o); console.log(obj[o]); }
对于数组循环呢,我个人不怎么推荐用for...in,而是用for...of比较好感觉,两者在数组的对比
var newarr=[1,2,4,5,7,8];
for (a in newarr){ console.log(newarr[a]); } for (a of newarr){ console.log(a); }
对了,说到循环,不得不说一说foreach这个东西了,这个我个人觉得操作数组挺方便的,对象还行吧
forEach方法中的function回调有三个参数:第一个参数是遍历的数组内容,第二个参数是对应的数组索引,第三个参数是数组本身
var newarr=[1,2,4,5,7,8]; newarr.forEach(function(v){ console.log(v); });
对象的话,则要:
var obj={ s:123, osa:'asdasd', as:'666', } Object.keys(obj).forEach(function(v){ console.log(v,obj[v]); });
在对象里常用的是在里修改,增加属性,如:这样在每个对象都加上state为0了
for (var i = 0; i < this.images.length; i++) { this.images.forEach((ele) => { ele.state = 0; }); }
字符串转换成对象:
object = JSON.parse(str);
对象转换成字符串:
str=JSON.stringify(object);