1.解构: 不定参数,扩展表达式

1         let arr = [100, 201, 303, 911];
2         let [one, ...others] = arr;
3         console.log(others.length);                    //3
4         console.log(one);                              //100
5         console.log(others[0]);                        //201
6         console.log(others[1]);                        //303

1.2 解构:数组自身链接返回自身

1         // 数组链接返回自身
2         let arr = [10, 20, 30];
3         let newArr = arr.concat();
4         console.log(newArr);             //[10, 20, 30]

1.3 解构:

1         let arr = [10, 20, 30, 200];
2         let [...newArr] = arr;
3         console.log(newArr);

1.4 解构:

 1         let User = {
 2             name: 'aluoha',
 3             age: 25,
 4             class: {
 5                 group1: {
 6                         one: '马援',
 7                         two: '路博德'
 8                     },
 9                     group2: {
10                         one: '卫青',
11                         two: '刘邦'
12                     }
13             },
14             arr: [10, 20, 30]
15         };
16         let {name,age,class: {group1},arr} = User;
17         console.log(name, age, group1, group1.two, arr);        //aluoha 25 Object{}  路博德   [10,20,30]

1.4.2 解构:

 1   let User = {
 2             name: 'aluoha',
 3             age: 25,
 4             class: {
 5                 group1: {
 6                         one: '张飞',
 7                         two: '关羽'
 8                     },
 9                     group2: {
10                         one: '徐晃',
11                         two: '丁典'
12                     }
13             },
14             arr: [10, 20, 30]
15         };
16         let {
17             name,
18             age,
19             class: {
20                 group1, group2
21             },
22             arr: [one, two, three]
23         } = User;
24         console.log(name, age, group1.one, group1.two, group2.one, group2.two, one, two, three);
25     </script>

 

2. 杂项:如何反转一个对象的键值对:即将键和值反转

2.1 使用Object.keys()  获取一个对象的属性数组

       var obj = {
            a: 10,
            b: 20,
            c: 30
        };
        var keys = Object.keys(obj); //可以获取到对象的键,组成的数组
        console.log(keys);

2.2 对obj 进行键值反转:

 1         var obj = {
 2             a: 10,
 3             b: 20,
 4             c: 30
 5         };
 6         var keys = Object.keys(obj);  //可以获取到对象的键,组成的数组
 7         console.log(keys);            // ['a','b','c']
 8         var res = {};
 9         keys.forEach((val) => {
10             res[obj[val]] = val;
11         });
12         console.log(res);             // {10:'a',20:'b',30:'c'}

 

2.3 使用hasOwnProperty()  来实现键值对反转

 

2.3.1  确认一下 hasOwnProperty 是否有效

1         function Myobj() {
2             this.a = 10;
3             this.b = 20;
4             this.c = 30;
5         }
6         Myobj.prototype.d = 40;                        // 在原型对象上加入一个属性 d ,值为 40 
7         var obj = new Myobj();                         // 创建一个对象
8         console.log(obj.d);                            // 40
9         console.log(obj.hasOwnProperty('d'));          // false

结果:obj 能够调用d 的值,但是d 不是obj 本身的属性,所以显示false

2.3.2 键值对反转实现:

 1 function Myobj() {
 2             this.a = 10;
 3             this.b = 20;
 4             this.c = 30;
 5         }
 6         var obj = new Myobj(); // 创建一个对象
 7         var keys = [];                                     //创建一个空数组接受obj 的键
 8         for (var key in obj) {
 9             if (obj.hasOwnProperty(key)) {
10                 keys.push(key);    
11             }
12         };
13         var res = {};                                      //创建一个空对象接受反转后的对象
14         for (var i = 0, len = keys.length; i < len; i++) {
15             res[obj[keys[i]]] = keys[i];
16         }
17         console.log(obj);
18         console.log(res);

 

posted on 2018-01-19 16:11  huanying2015  阅读(731)  评论(0编辑  收藏  举报