您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關js中數組的用法示例的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
假設現在有一個數列,你希望更新它的每一項(map的功能)然后篩選出一部分(filter的功能)。如果是先使用map
然后filter
的話,你需要遍歷這個數組兩次。
在下面的代碼中,我們將數列中的值翻倍,然后挑選出那些大于50的數。
const numbers = [10, 20, 30, 40]; const doubledOver50 = numbers.reduce((finalList, num) => { num = num * 2; if (num > 50) { finalList.push(num); } return finalList; }, []); doubledOver50; // [60, 80]
很多時候,你希望統計數組中重復出現項的個數然后用一個對象表示。那么你可以使用reduce
方法處理這個數組。
下面的代碼將統計每一種車的數目然后把總數用一個對象表示。
var cars = ['BMW','Benz', 'Benz', 'Tesla', 'BMW', 'Toyota']; var carsObj = cars.reduce(function (obj, name) { obj[name] = obj[name] ? ++obj[name] : 1; return obj; }, {}); carsObj; // => { BMW: 2, Benz: 2, Tesla: 1, Toyota: 1 }
有時候你會將函數返回的多個值放在一個數組里。我們可以使用數組解構來獲取其中每一個值。
let param1 = 1; let param2 = 2; [param1, param2] = [param2, param1]; console.log(param1) // 2 console.log(param2) // 1
當然我們關于交換數值有不少其他辦法:
var temp = a; a = b; b = temp b = [a, a = b][0] a = a + b; b = a - b; a = a - b
在下面的代碼中,我們從/post
中獲取一個帖子,然后在/comments
中獲取相關評論。由于我們使用的是async/await
,函數把返回值放在一個數組中。而我們使用數組解構后就可以把返回值直接賦給相應的變量。
async function getFullPost(){ return await Promise.all([ fetch('/post'), fetch('/comments') ]); } const [post, comments] = getFullPost();
使用遞歸,為每個深度級別 depth
遞減 1 。 使用 Array.reduce()
和 Array.concat()
來合并元素或數組。 基本情況下,depth
等于 1 停止遞歸。 省略第二個參數,depth
只能平鋪到 1 (單層平鋪) 的深度。
const flatten = (arr, depth = 1) => depth != 1 ? arr.reduce((a, v) => a.concat(Array.isArray(v) ? flatten(v, depth - 1) : v), []) : arr.reduce((a, v) => a.concat(v), []); flatten([1, [2], 3, 4]); // [1, 2, 3, 4] flatten([1, [2, [3, [4, 5], 6], 7], 8], 2); // [1, 2, 3, [4, 5], 6, 7, 8]
數組也可以對象解構,可以方便的獲取數組的第n個值
const csvFileLine = '1997,John Doe,US,john@doe.com,New York'; const { 2: country, 4: state } = csvFileLine.split(','); country // US state // New Yourk
感謝各位的閱讀!關于“js中數組的用法示例”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。