javaScript之ES6(二)


解構(gòu)賦值

解構(gòu)賦值

變量的賦值可以按照一定的模式批量賦值

數(shù)組模式

根據(jù)下標一一對應(yīng)賦值
var [a,b,c] = [1,2.3]
等同于
var a =1;
var b =2;
var c=3

  • 多維數(shù)組同理
  • 解構(gòu)失敗時賦值為undefined
    var [a,b] = [1];
    //a =1;
    //b=undefined;
  • 設(shè)默認值
    var [a,b=2] = [1];
    //a=1;
    //b=2;

對象模型

根據(jù)key值一一對應(yīng)賦值,注意此時value應(yīng)該是變量而非字符串。

var {a:a,b:b}={a:1,b=2};
//ES6對象key省略時,key value同名,也可以寫成這樣
var {a,b} = {a:1,b:2};
  • 解構(gòu)失敗為undefined
    var {c} = {a:1,b:2};
    //c=undefined;
  • json形式時,也是一一對應(yīng),位置相同即可
  • 默認值
    var {a,b=2}={a:1};
    //b=2;
  • 對于已定義的變量,使用對象模式需要注意(),否則等號兩邊被認為是兩個代碼塊。
let a ;
{a}={a:1};
//SyntaxError
let b ;
{={b:2}};
//b=2;

其他情況

  1. 當右邊表達式是字符串,類似數(shù)組,也是根據(jù)下標計算。
    const [a,b,c]='123''
    //a='1';b='2';c='3''
  2. 當右邊是其他類型時會被轉(zhuǎn)為對象,在進行解構(gòu)賦值。
    注:null和undefined無法轉(zhuǎn)為對象,會報錯。

其他應(yīng)用

  1. 函數(shù)參數(shù)
//形參寫成數(shù)組
function fn([a,b]){
...
};
fn([1,2]);
//形參寫成對象,不必考慮傳入順序
function fn (a,b){
..
};
fn({b:2,a:1});
  • 形參默認值的2種寫法,一種是解構(gòu)賦值寫法,一種是ES6中形參設(shè)置默認值的方式
    funtion fn({a,b}={1,2}){
    ...
    };
  1. 函數(shù)返回多個值,一次性接收
function fn(){
  return [1,2,3]
};
let [a,b,c]=fn();
  1. 交換值
    [y,x]=[x,y]
數(shù)組(一)

ES6數(shù)組新增的方法(部分為ES5方法)

1.concat()
合并數(shù)組,該方法會改變原數(shù)組
2.reverse()
反轉(zhuǎn)數(shù)組
3.Array.isArray()
判斷是否是數(shù)組,等效于Object.prototype,toString.call(xx)==="[objectArray]"
4.forEach(fn(val,index,arr))
ES5的方法,低版本瀏覽器不兼容,此方法用來遍歷數(shù)組,參數(shù)中arr指數(shù)組本身,arr.forEach(function(val,index,arr){...})
5.map(fn(val,index,arr))
遍歷,返回一個新數(shù)組,此函數(shù)參數(shù)為數(shù)組中的單個值(react中用較多)

var numbers = [1,2,3];
numbers.map(function(n){
  return n+1;
});
//[2,3,4]

6.filter(fn(val,index,arr))
過濾,返回一個新數(shù)組,它由fn函數(shù)返回true時的val組成

let arr= [3,4,5.6.7]
arr.filter(function(val){
  return val>4;
})
//[[5,6,7]

7.some(fn(val,index,arr))
查找,其中一個值經(jīng)過函數(shù)處理返回了true,則返回true,認為數(shù)組中包含符合條件的值

let arr=[2,3,4,5,6];
arr.some(function(elem,index,arr){
  return elem>=3
});
//true

8.every((val,index,arr))
類似some,fn都返回true,則返回true
9.reduce(fn(val,index,arr),ex)
合并,返回ex,默認是數(shù)組中的第一個val,也可以用第二參數(shù)指定

let arr=[1,2,3,4,5];
arr.reduce(function(ex,val){
  return ex+val;
},10);
//25
let json=['aaa','bb','c'];
json.reduce(function(logest,entry){
  return.entry.length>longest.length?entry:longest;
},");

9.find(fn(val,index,arr))
查找第一個符合fn的值,fn應(yīng)該返回t/f,差不到返回undefinde

let arr= [1,2,3]
arr.find(function(val){
  return val>1;
})
//2
比indexof強大,且可查找NaN
  1. findindex(fn(val,index,arr))
    類似find,返回符合fn的下標,查不到返回-1。

11.keys()返回數(shù)組所有key組成的遍歷器對象
遍歷器對象在后面詳解,它可以使用for.....of遍歷

let arr=[1,2,3]
for (let i of arr.keys()){
  console.log(i)
}
//1,2,3

12.valus()類似keys(),返回所有value
13.entries()返回所有key value

var arr = [1,2,3]
for(let i of arr.entries()){
  console.log(i)
}
//[0,1] [下標,值]  //[1,2]   //[2,3]

14.Array.from(arrlike,[fn(value)])
將數(shù)組轉(zhuǎn)化為數(shù)組,替代Arrar.prototype.slice,call,fn用來返回新值。

常見的類數(shù)組

  • DOM操作返回的是節(jié)點集合
let p = document.getElementsByTagName("p");
Array.from(p).forEach(fn...);
//正常情況下頁可使用for循環(huán),長度為類數(shù)組的length
  • 函數(shù)內(nèi)部的anguments也是累數(shù)組
    注:具有l(wèi)terator接口的都可使用Array.from()
    除了上述方法以外,還有其他諸如數(shù)組填充fill()等不怎么用到的方法,這里就不再列出。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、新的聲明方式 以前我們在聲明時只有一種方法,就是使用var來進行聲明,ES6對聲明的進行了擴展,現(xiàn)在可以有三種...
    令武閱讀 1,097評論 0 7
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,619評論 0 13
  • Scala與Java的關(guān)系 Scala與Java的關(guān)系是非常緊密的??! 因為Scala是基于Java虛擬機,也就是...
    燈火gg閱讀 3,611評論 1 24
  • Javascript有很多數(shù)組的方法,有的人有W3C的API,還可以去MDN上去找,但是我覺得API上說的不全,M...
    頑皮的雪狐七七閱讀 4,502評論 0 6
  • 開篇先來壓壓驚,不要被題目嚇到。雖然多囊卵巢綜合征目前無法治愈,但這個病不是絕癥,也沒有想象的那么可怕,只要認真對...
    心大夫閱讀 1,449評論 1 2

友情鏈接更多精彩內(nèi)容