VUE扩展运算符(...)

Vue扩展运算符是JS中一个可以遍历数组和对象的一种特殊运算符,可以用来从数组和对象中构建出新的对象数组,Vue中也实现了这项功能,这使得开发者可以在构建应用时使用扩展运算符来进行复杂的处理。

在JS中,扩展运算符的 形式如下:

...obj

使用扩展运算符可以将obj所有属性展开,从而获得一个对象或数组的副本。

例如,下面的代码可以将数组arr加到变量a中:

const arr = [1,2,3];
const a  = [...arr]

Vue中的扩展运算符与JS中的扩展运算符基本一致,可以用来获取数组和对象的副本,而Vue中使用扩展运算符的地方更为丰富,比如:在组件中定义组件选项、在组件中定义props、在实例中定义data对象等。

1、操作对象

在定义组件 props时,可以使用扩展运算符:

Vue.component(example-component {
    props: {
        ...data
    },
    template: <div>{
    
    {value}}</div>
})

在实例中定义data对象时也可以使用扩展运算符:

const app = new Vue({
    data: {
        .data
    },
    template: <div>{
    
    {value}}</div>
})

使用扩展运算符合并多个对象(使用扩展运算符合并对象时,如果两个对象中有相同的属性,则对象最后的属性会覆盖先前的属性):

const obj1 = {a: 1}
const obj2 = {b: 2}
const obj = {...obj1, ...obj2}

修改一个属性

method2() {
    let a = {name: 'zhh', age: 18, id: 10};
    //先拿到a, 后面的name:zhh1,把 a 中name 的值替换掉了
    let c = {...a, name: 'zhh1'};
    console.log(c);
    // 打印结果  {name: "zhh1", age: 18, id: 10}
}

删除一个属性

method1() {
    let a = {name: 'zhh', age: 18, id: 10};
    let {name, ...c} = a;
    console.log(name, c);
    //  打印结果 zhh {age: 18, id: 10}
}

如果将对象属性扩展放在数组,将会报错:

iClick11() {
    let obj = {
        name: 'zhh',
        age: '20'
    }
    console.log([...obj]);//会报错
    }
}

2、操作数组

打印数组

methods: {
/**
* 把数组中的元素孤立起来
*/
iClick() {
    let iArray = ['1', '2', '3'];
    console.log(...iArray);
    // 打印结果  1 2 3
}

在数组中添加元素

iClick3() {
    let iArray = ['1', '2', '3'];
    console.log(['0', ...iArray, '4']);
    // 打印结果  ["0", "1", "2", "3", "4"]
}

在数组中删除元素(取出一个元素,与结构赋值的结合。如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错)

iClick8() {
    const [first, ...rest] = [1, 2, 3, 4, 5];
    console.log(first);
    // 打印结果 1
    console.log([...rest]);
    // 打印结果 [2, 3, 4, 5]
    
    const [one, ...last] = ["foo"];
    console.log(one);
    //打印结果 foo
    console.log([...last]);
    //打印结果 []
}

数组合并

iClick6() {
    // ES6 的写法
    var arr1 = [0, 1, 2];
    var arr2 = [3, 4, 5];
    arr1.push(...arr2);
    console.log(arr1);
    //  打印结果 [0, 1, 2, 3, 4, 5]
}

//推荐使用
iClick7() {
    var arr1 = [0, 1, 2];
    var arr2 = [3, 4, 5];
    console.log([...arr1, ...arr2]);
    //  打印结果 [0, 1, 2, 3, 4, 5]
}

将字符串转成数组

iClick9() {
    let iString = 'woshizhongguoren';
    console.log([...iString]);
    //  打印结果 ["w", "o", "s", "h", "i", "z", "h", "o", "n", "g", "g", "u", "o", "r", "e", "n"]
}

Map和Set结构,Generator函数

iClick10() {
    let map = new Map([
    [1, 'one'],
    [2, 'two'],
    [3, 'three'],
    ]);
    let arr = [...map.keys()];
    console.log(arr);
    //  打印结果 [1, 2, 3]
}

当做参数传递时,和直接传数组的区别

iClick4() {
    let iArray = ['1', '2', '3'];
    //注意传的时候,就要三个点
    this.hanshu(...iArray);
},
hanshu(...iArray) {
    let ooo = 1;
    console.log(...iArray);
    //  打印结果 1 2 3
}

求出最大值

iClick5() {
    let iArray = [1, 2, 3, 99, 44, 66, 21, 85, 77];
    let ooo = Math.max(...iArray);
    console.log(ooo);
    //  打印结果 99
}

猜你喜欢

转载自blog.csdn.net/qq_42857603/article/details/129366840