1. 数组去重的方法: 如 [0,1,20,3,0,45,6,0]
- var arr = [0,1,20,3,0,45,6,0];
- Array.prototype.unrepeat = function(){
- var array = [];
- for(var i = 0;i<this.length;i++){
- if(array.indexOf(this[i]) === -1){
- array.push(this[i]);
- }
- }
- return array;
- }
- console.log(arr.unrepeat());
2. 数组的升序和降序
1) 升序:[1,5,9,4,8,7]
- var arr = [1,5,9,4,8,7]
- arr = arr.sort(function(a,b){return a-b})
- console.log(arr)
2) 降序:[1,5,9,4,8,7]
- var arr = [1,5,9,4,8,7]
- arr = arr.sort(function(a,b){return b-a})
- console.log(arr)
3. 数组对象的升序和降序:
1) 升序: 如 [{id:1},{id:7},{id:5},{id:9},{id:20},{id:3}]
- var arr = [{id:1},{id:7},{id:5},{id:9},{id:20},{id:3}]
- arr = arr.sort(function(a,b){return a.id - b.id})
- console.log(arr)
2) 降序
- var arr = [{id:1},{id:7},{id:5},{id:9},{id:20},{id:3}]
- arr = arr.sort(function(a,b){return b.id - a.id})
- console.log(arr)
4. 数组对象去重的小方法: 如 [{id:1},{id:2},{id:3},{id:4},{id:2},{id:3}]
- Array.prototype.unrepeat = function(){
- var arr = this,
- len = arr.length;
- arr.sort(function(a,b){
- return a.id - b.id
- })
- function repeat(index){
- if(index>= 1){
- if(arr[index].id === arr[index-1].id){
- arr.splice(index,1)
- }
- repeat(index -1);
- }
- }
- repeat(len -1);
- return arr;
- }
- var arr = [{id:1},{id:2},{id:3},{id:4},{id:2},{id:3}];
- console.log(arr.unrepeat())
5. 给予数组对象添加对象属性字段:
1. 使用于为数组的字段名相同的情况下适合以下的方法:
- var array = [
- {id:1,child:[{
- id:11,child:[{
- id:111,child:[{
- id:1111,child:[{
- id:11111
- }]
- }]
- }]
- }]
- }]
- function changeField(arr){
- for(var i = 0;i<arr.length;i++){
- arr[i].checked = false
- if(arr[i].child){
- changeField(arr[i].child)
- }
- }
- return arr
- }
- console.log(changeField(array))
6. 使用于为数组的字段名不相同的情况下适合以下的方法:
- var array = [
- {id:1,a:[{
- id:11,b:[{
- id:111,c:[{
- id:1111,d:[{
- id:11111
- }]
- }]
- }]
- }]
- }]
- function changeField(arr){
- for(var i = 0;i<arr.length;i++){
- arr[i].checked = false
- for(o in arr[i]){
- if(arr[i][o] instanceof Array){
- changeField(arr[i][o])
- }
- }
- }
- return arr
- }
- console.log(changeField(array))
7. 字符串转换数组的小方法: 你会喜欢那个呢, eval() 的性能相对比较差
- 1)eval():
- var arr = "[1,2,3,4,5]";
- console.log(eval(arr))
- 2)JSON.parse();
- var arr = "[1,2,3,4,5]";
- console.log(JSON.parse(arr))
3)es6 的 Array.of()
- console.log(Array.of(1,2,3,4,8))
- console.log(Array.of("a","b","c","d"))
4) 非字符串数组格式的字符串转化成数组:
- var arr = "1,2,3,4,5";
- arr = "["+arr+"]"
- console.log(JSON.parse(arr),eval(arr));
8. 判断数组是否为空, 和判断对象的 key 值是否存在于对象中
1)length : 为 0 则为空,
- let arr = []
- console.log(arr.length)
2)in 为 false 则为空 or 不存在
- let arr = [];
- console.log("0 in arr:"+(0 in arr)) //false
- let obj = {
- "a":"one",
- "b":"two"
- }
- console.log("a in obj:"+("a" in obj)) //true
- console.log("c in obj:"+("c" in obj)) //false
length 这种做法随便很开心的展现出需要的效果, 然鹅,"坑" 永不停息的出现, 当出现 let arr = [...] 这种情况的时候, 就出现假象, 长度则会为 3, 所以这个时候, 就轮到 in 登场了, 在 in 的眼里只要你不存在真实的值, 就给你返回 false 不存在, 怎么说? 请看下面代码演示:
- let arr = [,,,];
- console.log("长度为:"+arr.length) // 长度为 3
- console.log("0 in arr:"+(0 in arr)) //false
9. 数组遍历的诸多方法:
- 1)forEach():
- let arr = ["Creek","Sinoshy","Stream"]
- arr.forEach((val,index) => console.log(index+":"+val))
- 2)filter()
- let arr = ["Creek","Sinoshy","Stream"]
- arr.filter((val,index) => console.log(index+":"+val))
- 3)some()
- let arr = ["Creek","Sinoshy","Stream"]
- arr.some((val,index) => console.log(index+":"+val))
4)map()==>es6 新增遍历覆盖
- let arr = ["Creek","Sinoshy","Stream"]
- console.log(arr.map(x => "前端"))
10. 数组转换字符串
1)toString(): 得到的字符串会自动以逗号分隔
- let arr = ["Creek","Sinoshy","Stream"]
- console.log(arr.toString())
2)join(): 不给参数, 默认以逗号分隔, 如果给参数, 那么会根据给的参数进行分隔
- let arr = ["Creek","Sinoshy","Stream"]
- console.log(arr.join())
- console.log(arr.join("1"))
- console.log(arr.join("|"))
- console.log(arr.join("a"))
- console.log(arr.join("啊"))
以后遇到有需求的小伙伴留言, 就持续增加其他的数组小方法, 欢迎各位小伙伴留言小需求.
来源: http://www.qdfuns.com/article/23217/14b8a9cd5489583e35c054775b554f5f.html