Array的方法

  1. slice()對應(yīng)string的substring(),它截取數(shù)組的部分元素,返回一個新的數(shù)組:

var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; arr.slice(0, 3); // 從索引0開始,到索引3結(jié)束,但不包括索引3: ['A', 'B', 'C'] arr.slice(3); // 從索引3開始到結(jié)束: ['D', 'E', 'F', 'G']

注意到:slice()的參數(shù)包含開始索引,不包含結(jié)束索引 如果不給slice()傳遞參數(shù),將從頭到尾截取所有元素,利用這一點(diǎn),我們很容易復(fù)制一個數(shù)組:

var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; var aCopy = arr.slice(); aCopy; // ['A', 'B', 'C', 'D', 'E', 'F', 'G'] aCopy === arr; // false

2 . push()和pop() , push()想數(shù)組末尾加若干元素,pop()刪除數(shù)組最后一個元素,并返回該元素:
var arr = [1, 2]; arr.push('A', 'B'); // 返回Array新的長度: 4 arr; // [1, 2, 'A', 'B'] arr.pop(); // pop()返回'B' arr; // [1, 2, 'A'] arr.pop(); arr.pop(); arr.pop(); // 連續(xù)pop 3次 arr; // [] arr.pop(); // 空數(shù)組繼續(xù)pop不會報錯伙窃,而是返回undefined arr; // []

3.unshift()和shift(), unshift()向Array頭部插入若干元素, shift()則是刪除數(shù)組的第一個元素:
var arr = [1, 2]; arr.unshift('A', 'B'); // 返回Array新的長度: 4 arr; // ['A', 'B', 1, 2] arr.shift(); // 'A' arr; // ['B', 1, 2] arr.shift(); arr.shift(); arr.shift(); // 連續(xù)shift 3次 arr; // [] arr.shift(); // 空數(shù)組繼續(xù)shift不會報錯咨跌,而是返回undefined arr; // []

4.sort(), 對當(dāng)前Array排序,它會直接修改當(dāng)前Array的元素位置,直接調(diào)用時,按默認(rèn)的順序排序:
var arr = ['B', 'C', 'A']; arr.sort(); arr; // ['A', 'B', 'C']

5.reverse(),把整個的Array元素反轉(zhuǎn):
var arr = ['one', 'two', 'three']; arr.reverse(); arr; //['three', 'two', 'one']

6.splice()方法是修改數(shù)組的"萬能方法",它可以從制定索引的位置開始,刪除若干元素,再從該位置添加若干元素:
//刪除又添加
var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle'];
// 從索引2開始刪除3個元素,然后再添加兩個元素: arr.splice(2, 3, 'Google', 'Facebook'); // 返回刪除的元素 ['Yahoo', 'AOL', 'Excite']
arr; // ['Microsoft', 'Apple', 'Google', 'Facebook' , 'Oracle']

// 只刪除,不添加:
arr.splice(2, 2); // ['Google', 'Facebook'] arr; // ['Microsoft', 'Apple', 'Oracle']

// 只添加,不刪除:
arr.splice(2, 0, 'Google', 'Facebook'); // 返回[],因為沒有刪除任何元素
arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']

7.concat()把當(dāng)前數(shù)組與另一個數(shù)組鏈接起來,返回一個新的數(shù)組:
var arr = ['A', 'B', 'C']; var added = arr.concat([1, 2, 3]); added; // ['A', 'B', 'C', 1, 2, 3] arr; // ['A', 'B', 'C']

  • 實際上concat()可以接收任意多個元素和數(shù)組,并自動把數(shù)組拆開,然后全部添加到新的數(shù)組里:*
    var arr = ['A', 'B', 'C']; arr.concat(1, 2, [3, 4]); // ['A', 'B', 'C', 1, 2, 3, 4]

8.join()將當(dāng)前數(shù)組按制定的字符串連接起來,然后返回連接后的字符串:
var arr = ['A', 'B', 'C', 1, 2, 3]; arr.join('-'); // 'A-B-C-1-2-3'
如果Array的元素不是字符串型酥,將自動轉(zhuǎn)換為字符串后再連接

9.find() ,找到匹配的就返回該匹配的元素
//最右邊的barcode 是前面已經(jīng)給出的
const cartItem = cartItems.find(cartItem => cartItem.item.barcode === barcode);cartItems 是一個數(shù)組掏膏,它里面的每個元素我們自己把它叫 cartItem(也可以是別的原杂,因為是虛有的) 挨决, 每一個元素是一個 key :item请祖,value :內(nèi)容是一系列包含barcode 的鍵值對,只要找到固定的barcode脖祈,即 cartItem.item.barcode===barcode為true 肆捕,該find()函數(shù)就返回 該元素cartItem

  1. map(),改變數(shù)組的每個元素
    使用數(shù)組的map()方法: 比如:array = [1,2,3]; let arr = array.map(i => i 2) ; // i表示數(shù)組array 的每一個元素, 這樣 i 的值聚會被改變?yōu)?i2 結(jié)果: arr = [2, 4, 6];
    代碼中的實例:
    let buildReceiptItems = (cartItems, promotions) => {return cartItems.map(cartItem => {let promotionType = getPromotionType(cartItem.item.barcode, promotions);let {subtotal, saved} = discount(cartItem, promotionType);return {cartItem, subtotal, saved};})};
    代碼解釋: 1. map函數(shù)中的參數(shù)cartItem 表示 數(shù)組cartITems 的每一個元素,該cartItem 會被map函數(shù)中的
    返回值 {cartItme,subtotal,saved} 替換 2.ES新特性: 當(dāng)一個對象的 key 和 value 完全一樣的時候,可以只寫一個       比如:return {cartItem:cartItem , subtotal : subtotal, saved : saved} 等價于 return { cartItem, subtotal, saved };

11.includes()
ES6 數(shù)組的新方法 includes() ,比 find() 簡單,只是去找一個數(shù)組里面有沒包含一個指定的元素 盖高,
function getPromotionType(barcode, promotions) {const promotion = promotions.find(promotion => promotion.barcodes.incluses(barcode));return promotion ? promotion.type : undefined;};

12.some() 判斷數(shù)組師是否包含一個元素慎陵,返回的是一個true or false

  • arr.some(callback*[, thisArg])
    some
    為數(shù)組中的每一個元素執(zhí)行一次 callback
    函數(shù),直到找到一個使得 callback 返回一個“真值”(即可轉(zhuǎn)換為布爾值 true 的值)喻奥。如果找到了這樣一個值席纽,some
    將會立即返回 true
    。否則撞蚕,some
    返回 false
    润梯。callback
    只會在那些”有值“索引上被調(diào)用,不會在那些被刪除或從來未被賦值的索引上調(diào)用。some
    被調(diào)用時不會改變數(shù)組
    var number = [2, 5, 8, 1, 4].some( element => element >= 10 ) ; // passed is true var number = [12, 5, 8, 1, 4].some( element => element >= 10 ); // passed is true
    const promotion = promotions.find(promotion => promotion.barcodes.some(b => b === barcode));

13.filter() 一個數(shù)組變成另外一個數(shù)組

  • arr.filter(callback[, thisArg])
    callback
    用來測試數(shù)組的每個元素的函數(shù)纺铭。調(diào)用時使用參數(shù) (element, index, array)抒和。返回true表示保留該元素(通過測試),false則不保留彤蔽。filter
    為數(shù)組中的每個元素調(diào)用一次 callback
    函數(shù)摧莽,并利用所有使得 callback
    返回 true或 等價于 true 的值 的元素 創(chuàng)建一個新數(shù)組。callback
    只會在已經(jīng)賦值的索引上被調(diào)用顿痪,對于那些已經(jīng)被刪除或者從未被賦值的索引不會被調(diào)用镊辕。那些沒有通過callback
    測試的元素會被跳過,不會被包含在新數(shù)組中蚁袭。
    * 例子:篩選排除掉所有的小值 征懈, 下例使用 filter
    創(chuàng)建了一個新數(shù)組,該數(shù)組的元素由原數(shù)組中值大于 10 的元素組成揩悄。**
    var filtered = [12, 5, 8, 130, 44].filter( number =>
    element >= 10
    ); // filtered is [12, 130, 44]

14 . reduce() 數(shù)組 arr = [1,2,3,4] 求數(shù)組的累加求和
var arr = [1,2,3,4];
arr.reduce( function ( pre,cur ) { return pre + cur } ) ; // return 10
prev: 第一項的值或者上一次疊加的結(jié)果
cur: 當(dāng)前會參與疊加的項

15.every()

16.hasOwnProperty()有沒有某一屬性
如果數(shù)組postData[i]是一個對象卖哎,就可以去判斷它有沒有‘comments’屬性:postData[i].hasOwnProperty("comments")

數(shù)組的方法學(xué)習(xí)(查詢)網(wǎng)址: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市删性,隨后出現(xiàn)的幾起案子亏娜,更是在濱河造成了極大的恐慌,老刑警劉巖蹬挺,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件维贺,死亡現(xiàn)場離奇詭異,居然都是意外死亡巴帮,警方通過查閱死者的電腦和手機(jī)溯泣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門榕茧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來垃沦,“玉大人用押,你說我怎么就攤上這事≈缓蓿” “怎么了译仗?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵纵菌,是天一觀的道長。 經(jīng)常有香客問我休涤,道長笛辟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任手幢,我火速辦了婚禮,結(jié)果婚禮上忱详,老公的妹妹穿的比我還像新娘。我一直安慰自己匈睁,他們只是感情好监透,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布航唆。 她就那樣靜靜地躺著胀蛮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪糯钙。 梳的紋絲不亂的頭發(fā)上粪狼,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機(jī)與錄音任岸,去河邊找鬼再榄。 笑死,一個胖子當(dāng)著我的面吹牛演闭,可吹牛的內(nèi)容都是我干的不跟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼米碰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了购城?” 一聲冷哼從身側(cè)響起吕座,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘪板,沒想到半個月后吴趴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡侮攀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年锣枝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兰英。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡撇叁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出畦贸,到底是詐尸還是另有隱情陨闹,我是刑警寧澤楞捂,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站趋厉,受9級特大地震影響寨闹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜君账,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一繁堡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乡数,春花似錦帖蔓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至劫侧,卻和暖如春埋酬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背烧栋。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工写妥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人审姓。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像魔吐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子酬姆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容