码迷,mamicode.com
首页 > 编程语言 > 详细

ES6对于数组的扩展

时间:2019-09-02 18:54:47      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:注意   style   赋值   from   序列   ons   运算符   转化   字符   

扩展运算符(...),用于将数组转化为逗号分隔的参数序列。

...实现数组的拷贝:

数组是一维数组时,扩展运算符可以深拷贝一个数组(对象同理):

let arr = [1, 2, 3, 4, 5, 6];
let arr1 = [...arr];

arr == arr1  // false

当数组为多维时,数组中的数组变成浅拷贝(对象同理):

let arr = [1, 2, 3, 4, 5, 6, [1, 2, 3]];
let arr1 = [...arr];
arr1.push(7);
arr1[arr1.length - 2][0] = 100;
console.log(arr); //[1, 2, 3, 4, 5, 6,[100, 2, 3]]
console.log(arr1); //[1, 2, 3, 4, 5, 6, [100, 2, 3],7]

合并数组:

[...arr,...arr2,...arr3]
// 结合解构赋值,生成剩余数组 -- 扩展运算符只能置于参数最后
let [one,...rest] = [1,2,3,4,5]; one // 1 rest // [2,3,4,5]
// 扩展字符串成数组

[...‘babe‘]   // ["b", "a", "b", "e"]
// 可以把类数组对象转换为真正的数组

function convert2Arr(){
    return [...arguments];
}
        
let result = convert2Arr(1,2,3,4,5);
result // [1,2,3,4,5]

Array.from()

用于将类数组对象、可遍历的对象转为真正的数组

// 类数组对象
let obj = {
    0: ‘hello‘,
    1: ‘world‘,
    4: ‘outof bounds data‘,
    length: 3 
}

Array.from(obj);   // ["hello", "world", undefined]
// 根据属性名对应到数组的index, 超过length部分舍弃。没有对应的属性,置为undefined
// 注意:
    // Array.from()是一个很不严谨的角色,只要对象含有length属性,且值为正整数就能转,不保证转出来的东西质量是否符合要求。
    Array.from({user:‘babe‘,length:5})
    // [undefined, undefined, undefined, undefined, undefined]
        
    // Array.from()可接收第二个参数,用于对数组的每一项进行处理并返回
    Array.from([1,2,3],x=>x*x)
    // [1, 4, 9]
        
    Array.from([1,2,3],x=>{x*x})
    // [undefined, undefined, undefined]  --切记处理函数中一定要返回
        
    // Array.from()还可接收第三个参数,这样在处理函数中就可以使用传进去的对象域中的值
    let that = {
        user:‘babe‘
    }
    let obj = {
        0:‘babe‘,
        1:‘zhangsan‘,
        2:‘lisi‘,
        length:3
    }
    let result = Array.from(obj,(user) =>{
        if(user == that.user){
            return user;
        }

        return 0;
    },that);
    result   // ["babe", 0, 0]

 

 

 

 

 

 

 

 

 

 

 

原文:

https://segmentfault.com/a/1190000014784362

ES6对于数组的扩展

标签:注意   style   赋值   from   序列   ons   运算符   转化   字符   

原文地址:https://www.cnblogs.com/xjy20170907/p/11448200.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!