欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript數(shù)組常用方法find、findIndex、filter、map、flatMap及some詳解

 更新時間:2025年07月16日 12:01:20   作者:浩宇軟件開發(fā)  
在JavaScript中數(shù)組是一種非常常見且功能強大的數(shù)據(jù)結(jié)構(gòu),這篇文章主要介紹了JavaScript數(shù)組常用方法find、findIndex、filter、map、flatMap及some的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

這些數(shù)組方法都是ES6引入的,它們?yōu)樘幚頂?shù)組提供了更簡潔、更函數(shù)式的方式。下面我將詳細(xì)介紹每個方法的用法和使用場景,并提供示例。

1. find()

作用:返回數(shù)組中滿足提供的測試函數(shù)的第一個元素的值。如果沒有找到則返回undefined。

使用場景:當(dāng)你需要從數(shù)組中查找第一個符合條件的元素時。

const users = [
  { id: 1, name: 'Alice', age: 25 },
  { id: 2, name: 'Bob', age: 30 },
  { id: 3, name: 'Charlie', age: 35 }
];

// 查找第一個年齡大于30的用戶
const user = users.find(user => user.age > 30);
console.log(user); // { id: 3, name: 'Charlie', age: 35 }

// 查找不存在的用戶
const notFound = users.find(user => user.age > 40);
console.log(notFound); // undefined

2. findIndex()

作用:返回數(shù)組中滿足提供的測試函數(shù)的第一個元素的索引。若沒有找到則返回-1。

使用場景:當(dāng)你需要知道某個元素在數(shù)組中的位置時。

const numbers = [10, 20, 30, 40, 50];

// 查找第一個大于25的元素的索引
const index = numbers.findIndex(num => num > 25);
console.log(index); // 2

// 查找不存在的元素的索引
const notFoundIndex = numbers.findIndex(num => num > 100);
console.log(notFoundIndex); // -1

3. filter()

作用:創(chuàng)建一個新數(shù)組,包含通過所提供函數(shù)實現(xiàn)的測試的所有元素。

使用場景:當(dāng)你需要從數(shù)組中篩選出符合條件的多個元素時。

const products = [
  { id: 1, name: 'Laptop', price: 999, inStock: true },
  { id: 2, name: 'Phone', price: 699, inStock: false },
  { id: 3, name: 'Tablet', price: 499, inStock: true }
];

// 篩選有庫存的產(chǎn)品
const availableProducts = products.filter(product => product.inStock);
console.log(availableProducts);
// [
//   { id: 1, name: 'Laptop', price: 999, inStock: true },
//   { id: 3, name: 'Tablet', price: 499, inStock: true }
// ]

// 篩選價格低于500的產(chǎn)品
const cheapProducts = products.filter(product => product.price < 500);
console.log(cheapProducts);
// [{ id: 3, name: 'Tablet', price: 499, inStock: true }]

4. map()

作用:創(chuàng)建一個新數(shù)組,其結(jié)果是該數(shù)組中的每個元素都調(diào)用一個提供的函數(shù)后的返回值。

使用場景:當(dāng)你需要對數(shù)組中的每個元素進(jìn)行轉(zhuǎn)換時。

const numbers = [1, 2, 3, 4];

// 將每個數(shù)字平方
const squares = numbers.map(num => num * num);
console.log(squares); // [1, 4, 9, 16]

// 從對象數(shù)組中提取特定屬性
const names = users.map(user => user.name);
console.log(names); // ['Alice', 'Bob', 'Charlie']

// 添加新屬性
const usersWithStatus = users.map(user => ({
  ...user,
  status: user.age > 30 ? 'Senior' : 'Junior'
}));
console.log(usersWithStatus);
// [
//   { id: 1, name: 'Alice', age: 25, status: 'Junior' },
//   { id: 2, name: 'Bob', age: 30, status: 'Junior' },
//   { id: 3, name: 'Charlie', age: 35, status: 'Senior' }
// ]

5. flatMap()

作用:首先使用映射函數(shù)映射每個元素,然后將結(jié)果壓縮成一個新數(shù)組。相當(dāng)于先map()再flat(1)。

使用場景:當(dāng)你需要先映射然后扁平化結(jié)果時。

const sentences = ["Hello world", "Good morning", "Have a nice day"];

// 將句子拆分為單詞并扁平化
const words = sentences.flatMap(sentence => sentence.split(' '));
console.log(words);
// ['Hello', 'world', 'Good', 'morning', 'Have', 'a', 'nice', 'day']

// 傳統(tǒng)方式需要先map再flat
const wordsOldWay = sentences.map(sentence => sentence.split(' ')).flat();
console.log(wordsOldWay); // 同上

// 處理嵌套數(shù)組
const data = [[1], [2, 3], [4]];
const flattened = data.flatMap(arr => arr.map(x => x * 2));
console.log(flattened); // [2, 4, 6, 8]

6. some()

作用:測試數(shù)組中是否至少有一個元素通過了提供的函數(shù)的測試。返回布爾值。

使用場景:當(dāng)你需要檢查數(shù)組中是否有元素滿足某個條件時。

const numbers = [1, 2, 3, 4, 5];

// 檢查是否有偶數(shù)
const hasEven = numbers.some(num => num % 2 === 0);
console.log(hasEven); // true

// 檢查是否有大于10的數(shù)
const hasLargeNumber = numbers.some(num => num > 10);
console.log(hasLargeNumber); // false

// 檢查用戶列表中是否有管理員
const users = [
  { id: 1, name: 'Alice', isAdmin: false },
  { id: 2, name: 'Bob', isAdmin: true },
  { id: 3, name: 'Charlie', isAdmin: false }
];
const hasAdmin = users.some(user => user.isAdmin);
console.log(hasAdmin); // true

一、查詢類方法

1.includes()

檢查數(shù)組是否包含某個值,返回布爾值

[1, 2, 3].includes(2); // true
['a', 'b', 'c'].includes('d'); // false

2.indexOf() / lastIndexOf()

返回元素在數(shù)組中的第一個/最后一個索引,找不到返回-1

['a', 'b', 'c', 'b'].indexOf('b'); // 1
['a', 'b', 'c', 'b'].lastIndexOf('b'); // 3

3.every()

檢查是否所有元素都滿足條件

[12, 5, 8, 130, 44].every(x => x >= 10); // false
[12, 54, 18, 130, 44].every(x => x >= 10); // true

二、操作類方法

1.concat()

合并兩個或多個數(shù)組

[1, 2].concat([3, 4], [5, 6]); // [1, 2, 3, 4, 5, 6]

2.slice()

返回數(shù)組的淺拷貝部分

['a', 'b', 'c', 'd'].slice(1, 3); // ['b', 'c']

3.splice()

修改數(shù)組內(nèi)容(添加/刪除元素)

const arr = [1, 2, 3, 4];
arr.splice(1, 2, 'a', 'b'); // 返回 [2, 3]
console.log(arr); // [1, 'a', 'b', 4]

三、轉(zhuǎn)換類方法

1.join()

將數(shù)組元素連接成字符串

['Fire', 'Air', 'Water'].join(); // "Fire,Air,Water"
['Fire', 'Air', 'Water'].join('-'); // "Fire-Air-Water"

2. reduce() / reduceRight()

對數(shù)組元素執(zhí)行累加器函數(shù)

[1, 2, 3, 4].reduce((acc, val) => acc + val); // 10
[1, 2, 3, 4].reduce((acc, val) => acc + val, 5); // 15 (帶初始值)

四、排序類方法

1.sort()

對數(shù)組元素進(jìn)行排序(原地修改)

const fruits = ['banana', 'apple', 'pear'];
fruits.sort(); // ['apple', 'banana', 'pear']

const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // [1, 2, 3, 4, 5]

2. reverse()

反轉(zhuǎn)數(shù)組順序(原地修改)

['a', 'b', 'c'].reverse(); // ['c', 'b', 'a']

五、迭代類方法

1. forEach()

對每個數(shù)組元素執(zhí)行函數(shù)

['a', 'b', 'c'].forEach((item, index) => {
  console.log(`${index}: ${item}`);
});
// 0: a
// 1: b
// 2: c

六、新增元素方法

1.push() / pop()

在數(shù)組末尾添加/刪除元素

const arr = [1, 2];
arr.push(3); // 返回新長度3,arr變?yōu)閇1, 2, 3]
arr.pop(); // 返回3,arr變回[1, 2]

2.unshift() / shift()

在數(shù)組開頭添加/刪除元素

const arr = [1, 2];
arr.unshift(0); // 返回新長度3,arr變?yōu)閇0, 1, 2]
arr.shift(); // 返回0,arr變回[1, 2]

七、ES6+新增方法

1. flat()

將嵌套數(shù)組扁平化

[1, 2, [3, 4]].flat(); // [1, 2, 3, 4]
[1, 2, [3, [4, 5]]].flat(2); // [1, 2, 3, 4, 5]

2. fill()

用固定值填充數(shù)組

[1, 2, 3].fill(0); // [0, 0, 0]
[1, 2, 3, 4].fill(5, 1, 3); // [1, 5, 5, 4]

3. Array.from()

從類數(shù)組對象創(chuàng)建新數(shù)組

Array.from('foo'); // ['f', 'o', 'o']
Array.from([1, 2, 3], x => x + x); // [2, 4, 6]

總結(jié)對比

方法返回值是否修改原數(shù)組使用場景
concat()新數(shù)組合并數(shù)組
every()布爾值檢查所有元素是否滿足條件
fill()修改后的數(shù)組填充數(shù)組元素
filter()新數(shù)組篩選元素
find()第一個匹配元素或undefined查找單個元素
findIndex()索引或-1查找元素位置
flat()新數(shù)組扁平化嵌套數(shù)組
flatMap()新數(shù)組映射后扁平化
forEach()undefined遍歷數(shù)組
includes()布爾值檢查是否包含值
indexOf()索引或-1查找元素首次出現(xiàn)位置
join()字符串連接數(shù)組為字符串
map()新數(shù)組轉(zhuǎn)換每個元素
pop()刪除的元素移除最后一個元素
push()新長度末尾添加元素
reduce()累加結(jié)果累加計算
reverse()反轉(zhuǎn)后的數(shù)組反轉(zhuǎn)數(shù)組順序
shift()刪除的元素移除第一個元素
slice()新數(shù)組截取數(shù)組部分
some()布爾值檢查是否有元素滿足條件
sort()排序后的數(shù)組數(shù)組排序
splice()刪除的元素數(shù)組添加/刪除元素
unshift()新長度開頭添加元素

這些方法都遵循函數(shù)式編程的原則,不會修改原數(shù)組,而是返回新數(shù)組或值。它們可以鏈?zhǔn)秸{(diào)用,使得代碼更加簡潔和可讀。

到此這篇關(guān)于JavaScript數(shù)組常用方法find、findIndex、filter、map、flatMap及some的文章就介紹到這了,更多相關(guān)JS數(shù)組常用方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論