当前位置:   article > 正文

js中...的用法_js ...

js ...

1.含义:展开运算符(spread operator)和剩余运算符(rest operator)

展开运算符

展开运算符允许迭代器在接收器内部分别展开或扩展。迭代器和接收器可以是任何可以循环的对象,例如数组、对象、集合、映射等。你可以把一个容器的每个部分分别放入另一个容器。

const newArray = ['first', ...oldArray]

剩余参数

剩余参数语法允许我们将无限数量的参数表示为数组。命名参数的位置可以在剩余参数之前

const func = (first, second, ...rest) => {}

2.用法:

2.1 复制数组

  1. const fruits = ['apple', 'orange', 'banana'];
  2. const fruitsCopied = [...fruits]; // ['apple', 'orange', 'banana']
  3. console.log(fruits === fruitsCopied); // false
  4. // 老方法
  5. fruits.map(fruit => fruit);

2.2 复制对象

复制的工作方式与数组相同。在以前它可以通过 Object.assign 和一个空的对象常量来实现

  1. const todo = { name: 'Clean the dishes' };
  2. const todoCopied = { ...todo }; // { name: 'Clean the dishes' }
  3. console.log(todo === todoCopied); // false
  4. // 老方法
  5. Object.assign({}, todo);

2.3 去重

Set 对象仅存储唯一的元素,并且可以用数组填充。它也是可迭代的,因此我们可以将其展开到新的数组中,并且得到的数组中的值是唯一的。

  1. const fruits = ['apple', 'orange', 'banana', 'banana'];
  2. const uniqueFruits = [...new Set(fruits)]; // ['apple', 'orange', 'banana']
  3. // 老方法
  4. fruits.filter((fruit, index, arr) => arr.indexOf(fruit) === index);

2.4 串联数组

old:concat 方法连接两个独立的数组

  1. const fruits = ['apple', 'orange', 'banana'];
  2. const vegetables = ['carrot'];
  3. const fruitsAndVegetables = [...fruits, ...vegetables]; // ['apple', 'orange', 'banana', 'carrot']
  4. const fruitsAndVegetables = ['carrot', ...fruits]; // ['carrot', 'apple', 'orange', 'banana']
  5. // 老方法
  6. const fruitsAndVegetables = fruits.concat(vegetables);
  7. fruits.unshift('carrot');

2.5 将参数作为数组进行传递

  1. const mixer = (x, y, z) => console.log(x, y, z);
  2. const fruits = ['apple', 'orange', 'banana'];
  3. mixer(...fruits); // 'apple', 'orange', 'banana'
  4. // 老方法
  5. mixer.apply(null, fruits);a

2.6 将参数转化为数组

JavaScript 中的参数是类似数组的对象。你可以用索引来访问它,但是不能调用像 map、filter 这样的数组方法。参数是一个可迭代的对象,那么我们做些什么呢?在它们前面放三个点,然后作为数组去访问!

  1. const mixer = (...args) => console.log(args);
  2. mixer('apple'); // ['apple']

2.7 数组切片

展开运算符也可以做到,但是必须一个一个去命名其余的元素

  1. const fruits = ['apple', 'orange', 'banana'];
  2. const [apple, ...remainingFruits] = fruits; // ['orange', 'banana']
  3. // 老方法
  4. const remainingFruits = fruits.slice(1);

2.8 合并对象

合并的唯一区别是具有相同键的属性将被覆盖。最右边的属性具有最高优先级。

  1. const todo = { name: 'Clean the dishes' };
  2. const state = { completed: false };
  3. const nextTodo = { name: 'Ironing' };
  4. const merged = { ...todo, ...state, ...nextTodo }; // { name: 'Ironing', completed: false }
  5. // 老方法
  6. Object.assign({}, todo, state, nextTodo);

2.9 字符串拆分成字符

可以用展开运算符把字符串拆分为字符。当然,如果用空字符串调用 split 方法也是一样的

  1. const country = 'USA';
  2. console.log([...country]); // ['U', 'S', 'A']
  3. // 老方法
  4. country.split('');
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/484295
推荐阅读
相关标签
  

闽ICP备14008679号