es6中引入擴充套件運算子(…),它用於把乙個陣列轉化為用逗號分隔的引數序列,它常用在不定引數個數時的函式呼叫,陣列合併等情形。因為typescript是es6的超集,所以typescript也支援擴充套件運算子。
1、可變引數個數的函式呼叫
function
push
(array,
...items)
function
add(
...vals)
return sum;
}let arr =[1
,2,3
,4,5
,6];
let sum =
add(
...arr)
;console.
log(sum)
;//21
2、更便捷的陣列合併let arr1 =[1
,2];
let arr2 =[5
,6];
let newarr =[20
];//es5 舊寫法
newarr = newarr.
concat
(arr1)
.concat
(arr2)
;//[20,1,2,5,6]
console.
log(newarr)
;//es6 使用擴充套件運算子
newarr =[20
,...arr1,
...arr2]
;//[20,1,2,5,6]
console.
log(newarr)
;
// es5 的寫法
function
f(x, y, z)
var args =[0
,1,2
]; f.(
null
, args)
;// es6 的寫法
function
f(x, y, z)
var args =[0
,1,2
];f(
...args)
;
4、求最大值math.max()// es5 的寫法
math.max.
(null,[
14,3,
77])// es6 的寫法
math.
max(
...[14,
3,77]
)// 等同於
math.
max(14,
3,77)
;
通過push函式,將乙個陣列新增到另乙個陣列的尾部
// es5 的寫法
var arr1 =[0
,1,2
];var arr2 =[3
,4,5
];
array.prototype.push.
(arr1, arr2)
;// es6 的寫法
var arr1 =[0
,1,2
];var arr2 =[3
,4,5
];
arr1.
push
(...arr2)
;
新建date型別
// es5
new(date.bind.
(date,
[null
,2015,1
,1])
)// es6
newdate
(...
[2015,1
,1])
;
與解構賦值結合,生成新陣列
// es5
a = list[0]
, rest = list.
slice(1
)// es6
[a,...rest]
= list
下面是另外一些例子。
const
[first,
...rest]=[
1,2,
3,4,
5]; first // 1
rest // [2, 3, 4, 5]
const
[first,
...rest]=[
];
first // undefined
rest // :
const
[first,
...rest]=[
"foo"
];
first // "foo"
rest //
將字串轉為真正的陣列
[
...'hello'
]// [ "h", "e", "l", "l", "o" ]
將實現了 iterator 介面的物件轉為陣列
var nodelist = document.
queryselectorall
('div');
var array =
[...nodelist]
;
ES6 拓展運算子 三個點
拓展運算子是什麼?es6中引入擴充套件運算子 它用於把乙個陣列轉化為用逗號分隔的引數序列,它常用在不定引數個數時的函式呼叫,陣列合併等情形。因為typescript是es6的超集,所以typescript也支援擴充套件運算子。用在什麼地方?1 可變引數個數的函式呼叫 function push ar...
es6 擴充套件運算子 三個點( )
看了阮大大的文章,發現很多都有運算子 暫且叫運算子 三個點點。於是查了一下。其實看起來這樣用也很6 乾貨如下 表面意思 擴充套件運算子 spread 是三個點 它好比 rest 引數的逆運算,將乙個陣列轉為用逗號分隔的引數序列。該運算子主要用於函式呼叫。function push array,ite...
es6 擴充套件運算子 三個點( )
擴充套件運算子 spread 是三個點 它好比 rest 引數的逆運算,將乙個陣列轉為用逗號分隔的引數序列。console.log 1,2,3 1 2 3 console.log 1,2,3,4 5 1 2 3 4 5 document.queryselectorall div 該運算子主要用於函式...