es6陣列中可以用展開符嗎

2022-10-20 22:00:40

es6陣列可以用展開符。展開符「...」會將可迭代物件展開到其單獨的元素中,而所謂的可迭代物件就是任何能用「for of」迴圈進行遍歷的物件,例如陣列、字串、Map 、Set;當展開符用於陣列,可以將一個陣列轉為用逗號分隔的引數序列。

前端(vue)入門到精通課程:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:

本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

展開符(擴充套件操作符) 是ES6中引入的,將可迭代物件展開到其單獨的元素中,所謂的可迭代物件就是任何能用for of迴圈進行遍歷的物件,例如:陣列、字串、Map 、Set 、DOM節點等。

展開運運算元(spread operator)允許一個表示式在某處展開。展開運運算元在多個引數(用於函數呼叫)或多個元素(用於陣列字面量)或者多個變數(用於解構賦值)的地方可以使用。

es6展開符的使用(陣列方面)

1、複製陣列

給定一個陣列,想要將一個陣列的成員複製到另一個陣列中,該怎麼做?

const a = [1, 2];
const b = a;
console.log(b); // [1, 2]
登入後複製

真有表面上這麼簡單嗎?試著修改一下a陣列中的值

a[0] = 3;
console.log(b); // [3, 2]
登入後複製

誒?怎麼我修改了a陣列中的值,結果b陣列中的值也變了?這裡涉及到的是堆疊的原理,就不具體展開說了,你只需要知道簡單地使用兩邊相等的方式是不能完成陣列的複製的,這裡使用展開運運算元就可以完成啦?

const a = [1, 2];
const c = [...a];
console.log(c); // [1, 2]
a[0] = 3;
console.log(c); // [1, 2]
登入後複製

2、合併陣列

const a = [1, 2];
const b = [3];
const c = [4, 5];

console.log([...a, ...b, ...c]); // [1, 2, 3, 4, 5]
console.log([...c, ...a, ...b]); // [4, 5, 1, 2, 3]
console.log([99, ...a, 24, ...b, ...c]); // [99, 1, 2, 24, 3, 4, 5]
登入後複製

3、字串轉為陣列

前置知識:字串可以按照陣列的形式展開?

const name = 'Jae';
console.log(...name); // J a e
登入後複製

字串轉陣列除了用 split() 方法,也可以用展開運運算元?

const name = 'Jae';
const name_string = [...name];
console.log(name_string); // ["J", "a", "e"]
登入後複製

4、常見的類陣列轉化為陣列

為什麼要將類陣列轉化為陣列呢?因為類陣列不能使用陣列的方法,將其轉化過來對於一些對資料進行處理的需求就更加方便了 ~

  • arguments

function func() {
	console.log(arguments);
}
func(1, 2); // Arguments(2) [1, 2, callee: ƒ, Symbol(Symbol.iterator): ƒ]

// 使用展開遠算符
function func() {
	console.log([...arguments]);
}
func(1, 2); // [1, 2]
登入後複製
  • NodeList

<!--HTML程式碼-->
<p>1</p>
<p>2</p>
<p>3</p>
登入後複製
const a = document.querySelectAll("p");
console.log(a); // NodeList(3) [p, p, p]
console.log([...a]); // [p, p, p]
登入後複製

【相關推薦:、】

以上就是es6陣列中可以用展開符嗎的詳細內容,更多請關注TW511.COM其它相關文章!