<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
一: 通過陣列字面量
let array = [1,2,3]; console.log(array);//[1,2,3]
二: 通過new Array()建立陣列
let array = new Array(1, 2, 3); console.log(array); //[1,2,3]
找出第一個符合條件的陣列成員。
它的引數是一個回撥函數,對所有陣列成員依次執行該回撥函數。
直到找出第一個返回值為true的成員,然後返回該成員。
如果沒有符合條件的成員,則返回undefined。
-- 找出第一個大於15的數位 let arr = [10, 20, 30] let firstItem = arr.find((item, index, Arr) => { return item > 15 }) console.log('firstItem==>', firstItem); //輸出20 -- 找出第一個大於19的數位的這一項的值 let arr = [{ age: 10 }, { age: 20 }, { age: 30 }] let firstItem = arr.find((item, index, Arr) => { return item.age > 19 }) console.log('firstItem==>', firstItem); //輸出{age: 20}
陣列範例的 findIndex 方法的用法與find方法非常類似,
返回第一個符合條件的陣列成員的位置,如果所有成員都不符合條件,則返回-1。
let arr = [{ age: 10 }, { age: 20 }, { age: 30 }] let a = arr.findIndex((item, index, Arr) => { return item.age > 15 }) let b = arr.findIndex((item, index, Arr) => { return item.age > 45 }) console.log('a==>', a); //輸出1 console.log('b==>', b); //輸出-1 //查詢陣列的某一項是否有某個值 //返回第一個符合條件的陣列成員的位置 const arr = [{ id: 001 }, { id: 002 }, { id: 003 }]; let index = arr.findIndex(item => { return item.id == '004' }) console.log(index);
陣列的成員有時還是陣列,Array.flat()用於將巢狀的陣列“拉平”,變成一維的陣列。
該方法返回一個新陣列,對原資料沒有影響。 [1, 2, [3, 4]].flat() 讀音【fu la t】 flat()預設只會「拉平」一層,如果想要「拉平」多層的巢狀陣列。 可以將flat()方法的引數寫成一個整數,表示想要拉平的層數,預設為1。 [1, 2, [3, [4, 5]]].flat() 上面程式碼中,表示想要拉平的層數,預設為1 // [1, 2, 3, [4, 5]] [1, 2, [3, [4, 5]]].flat(2) 上面程式碼中,flat()的引數為2,表示要「拉平」兩層的巢狀陣列。 // [1, 2, 3, 4, 5] 如果不管有多少層巢狀,都要轉成一維陣列,可以用Infinity關鍵字作為引數。 [1, [2, [3]]].flat(Infinity) // [1, 2, 3] 如果原陣列有空位,flat()方法會跳過空位。 [1, 2, , 4, 5].flat() // [1, 2, 4, 5]
我們都知道JavaScript不支援陣列索引值為負索引。
那麼想要表示陣列的最後一個成員,不能寫成arr[-1],只能使用arr[arr.length - 1]。
為了解決負索引這個問題,es6中為陣列範例增加了at()方法,接受一個整數作為引數。
返回對應位置的成員,支援負索引。
這個方法不僅可用於陣列, 也可用於字串和型別陣列( TypedArray)。
如果引數位置超出了陣列範圍,at()返回undefined。
const arr = [100, 120, 18, 130, 4]; console.log(arr.at(1)) //120 console.log(arr.at(-1)) //4 console.log(arr.at(-5)) //100 console.log(arr.at(-6)) //undefined
一個類似陣列的物件,Array.from將它轉為真正的陣列。
需要注意的是:這個類似陣列的物件必須要有length屬性才可以,轉為陣列。
否者將會轉為為一個空陣列
let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }; // ES5的寫法 var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c'] // ES6的寫法 let arr2 = Array.from(arrayLike); // ['a', 'b', 'c'] 當沒有類似陣列的物件沒有length屬性 let arrayLike = { '0': 'a', '1': 'b', '2': 'c', }; //此時返回的是一個空陣列 let arr2 = Array.from(arrayLike); // []
Array.of()方法用於將【一組數值】轉換為陣列.
簡單的使用:
const a = Array.of(10, 20, 26, 38); console.log(a); // [10, 20, 26, 38] const b = Array.of(1).length; console.log(b); // 1 Array.of()可以用以下的程式碼模擬實現: function ArrayOf() { return [].slice.call(arguments); }
Array.prototype.includes方法返回一個布林值,表示某個陣列是否包含給定的值。
與字串的includes方法類似。ES2016 引入了該方法。
簡單的使用方法
const arr = [100, 200, 300]; console.log(arr.includes('100')) //false console.log(arr.includes(100)) //true
沒有該方法之前,我們使用陣列的indexOf方法,檢查是否包含某個值。
if (arr.indexOf(el) !== -1) { // 有這個值 } indexOf方法有兩個缺點,一是不夠語意化,它的含義是找到引數值的第一個出現位置, 所以要去比較是否不等於-1,表達起來不夠直觀。 二是,它內部使用嚴格相等運運算元(===)進行判斷,這會導致對NaN的誤判。 [NaN].indexOf(NaN) // -1 includes使用的是不一樣的判斷演演算法,所以沒有這個問題。 [NaN].includes(NaN) // true
擴充套件運運算元是三個點(...),
將一個陣列轉為用逗號分隔的引數序列。
console.log(...[1, 2, 3]) // 1 2 3 console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5 [...document.querySelectorAll('div')] // [<div>, <div>, <div>]
let arr1=[11,22,]; let arr2=["aa","bb"]; // es5的合併 let arr=arr1.concat(arr2); console.log(arr) // [11, 22, "aa", "bb"] //es6 let newarr=[...arr1,...arr2] console.log(newarr) // [11, 22, 33, 55, "aa", "bb", "cc", "dd"]
// 函數內部有一個物件,arguments可以獲取到實參,但是一個偽陣列 //Array[餓 rei] function sun(){ console.log(arguments) //Arguments(8) [1, 2, 3, 4, 5, 6, 7, 9, callee: ƒ, Symbol(Symbol.iterator): ƒ] 他是一個偽陣列 } sun(1,2,3,4,5,6,7,9); // 如何將函數內部的偽陣列變為真實的陣列 方法1 function sun(){ let ags=Array.prototype.slice.call(arguments); ags.push(150); console.log(ags); //[1, 2, 3, 4, 5, 6, 7, 9, 150] } sun(1,2,3,4,5,6,7,9); // 如何將函數內部的偽陣列變為真實的陣列 方法2 function sun(){ let ags=[...arguments];//將偽陣列百年未真實的陣列 ags.push(150); console.log(ags); //[1, 2, 3, 4, 5, 6, 7, 9, 150] } sun(1,2,3,4,5,6,7,9); // 總結擴充套件運運算元是... [...變為真實陣列的物件]
陣列的空位指的是,陣列的某一個位置沒有任何值.
比如Array()建構函式返回的陣列都是空位。
let arr = new Array(3) console.log(arr); // [, , ,] 谷歌瀏覽器中會有出現 [空屬性 × 3]
上面程式碼中,Array(3)返回一個具有 3 個空位的陣列。
forEach(), filter(), reduce(), every() 和some()都會跳過空位。 map()會跳過空位,但會保留這個值 join()和toString()會將空位視為undefined,而undefined和null會被處理成空字串。 ps:ES6 則是明確將空位轉為undefined。 let arr = new Array(3) console.log(arr[0] === undefined); //true
ES5 對空位的處理,已經很不一致了,大多數情況下會忽略空位。
ps:ES6 則是明確將空位轉為undefined。 Array.from()方法會將陣列的空位,轉為undefined,也就是說,這個方法不會忽略空位。 Array.from(['a',,'b']) // [ "a", undefined, "b" ] 擴充套件運運算元(...)也會將空位轉為undefined。 [...['a',,'b']] // [ "a", undefined, "b" ] new Array(3).fill('a') // ["a","a","a"] for...of迴圈也會遍歷空位。 let arr = [, ,]; for (let i of arr) { console.log(1); } // 1 // 1 上面程式碼中,陣列arr有兩個空位,for...of並沒有忽略它們。 如果改成map()方法遍歷,空位是會跳過的
到此這篇關於ES6中陣列新增方法的文章就介紹到這了,更多相關ES6陣列新增方法內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45