溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

js中數(shù)組的用法示例

發(fā)布時(shí)間:2022-03-22 15:01:36 來源:億速云 閱讀:113 作者:小新 欄目:web開發(fā)

這篇文章給大家分享的是有關(guān)js中數(shù)組的用法示例的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

數(shù)組

1 reduce方法同時(shí)實(shí)現(xiàn)map和filter

假設(shè)現(xiàn)在有一個(gè)數(shù)列,你希望更新它的每一項(xiàng)(map的功能)然后篩選出一部分(filter的功能)。如果是先使用map然后filter的話,你需要遍歷這個(gè)數(shù)組兩次。
在下面的代碼中,我們將數(shù)列中的值翻倍,然后挑選出那些大于50的數(shù)。

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]

2 統(tǒng)計(jì)數(shù)組中相同項(xiàng)的個(gè)數(shù)

很多時(shí)候,你希望統(tǒng)計(jì)數(shù)組中重復(fù)出現(xiàn)項(xiàng)的個(gè)數(shù)然后用一個(gè)對(duì)象表示。那么你可以使用reduce方法處理這個(gè)數(shù)組。

下面的代碼將統(tǒng)計(jì)每一種車的數(shù)目然后把總數(shù)用一個(gè)對(duì)象表示。

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 }

3 使用解構(gòu)來交換參數(shù)數(shù)值

有時(shí)候你會(huì)將函數(shù)返回的多個(gè)值放在一個(gè)數(shù)組里。我們可以使用數(shù)組解構(gòu)來獲取其中每一個(gè)值。

let param1 = 1;
let param2 = 2;
[param1, param2] = [param2, param1];
console.log(param1) // 2
console.log(param2) // 1

當(dāng)然我們關(guān)于交換數(shù)值有不少其他辦法:

var temp = a; a = b; b = temp 
b = [a, a = b][0]  
a = a + b; b = a - b; a = a - b

4 接收函數(shù)返回的多個(gè)結(jié)果

在下面的代碼中,我們從/post中獲取一個(gè)帖子,然后在/comments中獲取相關(guān)評(píng)論。由于我們使用的是async/await,函數(shù)把返回值放在一個(gè)數(shù)組中。而我們使用數(shù)組解構(gòu)后就可以把返回值直接賦給相應(yīng)的變量。

async function getFullPost(){
 return await Promise.all([
 fetch('/post'),
 fetch('/comments')
 ]);
}
const [post, comments] = getFullPost();

5 將數(shù)組平鋪到指定深度

使用遞歸,為每個(gè)深度級(jí)別 depth 遞減 1 。 使用 Array.reduce() 和 Array.concat() 來合并元素或數(shù)組。 基本情況下,depth 等于 1 停止遞歸。 省略第二個(gè)參數(shù),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]

6 數(shù)組的對(duì)象解構(gòu)

數(shù)組也可以對(duì)象解構(gòu),可以方便的獲取數(shù)組的第n個(gè)值

const csvFileLine = '1997,John Doe,US,john@doe.com,New York';
const { 2: country, 4: state } = csvFileLine.split(',');

country			// US
state			// New Yourk

感謝各位的閱讀!關(guān)于“js中數(shù)組的用法示例”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

js
AI