常用字符串数组过滤方法
split()
split() 是字符串的方法,用于将字符串分割成子字符串数组:
// 基本语法
string.split(separator, limit)
参数:
- separator:分隔符,可以是字符串或正则表达式
- limit(可选):限制返回数组的长度
示例:
// 1. 基本使用
const path = '/manager/warehouses/create'
const segments = path.split('/')
console.log(segments)
// ['', 'manager', 'warehouses', 'create']
// 2. 使用限制数量
const text = 'apple,banana,orange,grape'
console.log(text.split(',', 2))
// ['apple', 'banana']
// 3. 使用空字符串分割
const word = 'hello'
console.log(word.split(''))
// ['h', 'e', 'l', 'l', 'o']
// 4. 使用正则表达式
const date = '2024-03-20'
console.log(date.split(/-|\//))
// ['2024', '03', '20']
filter()
filter() 是数组的方法,用于创建一个新数组,其中包含通过测试函数的所有元素:
// 基本语法
array.filter(callback(element, index, array))
参数:
- callback:用于测试数组元素的函数
- element:当前元素
- index(可选):当前索引
- array(可选):原数组
示例:
// 1. 过滤空值
const segments = ['', 'manager', '', 'warehouses', 'create']
const filtered = segments.filter(Boolean)
console.log(filtered)
// ['manager', 'warehouses', 'create']
// 2. 过滤数字
const numbers = [1, 2, 3, 4, 5, 6]
const evenNumbers = numbers.filter(num => num % 2 === 0)
console.log(evenNumbers)
// [2, 4, 6]
// 3. 过滤对象数组
const users = [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 17 },
{ name: 'Bob', age: 30 }
]
const adults = users.filter(user => user.age >= 18)
console.log(adults)
// [{ name: 'John', age: 25 }, { name: 'Bob', age: 30 }]
// 4. 使用索引和数组参数
const numbers = [1, 2, 3, 4, 5]
const filtered = numbers.filter((num, index, arr) => {
return num > arr[index - 1] // 只保留比前一个数大的数
})
console.log(filtered)
// [2, 3, 4, 5]
map()
map() 是数组的一个重要方法,用于创建一个新数组,其结果是对原数组中的每个元素调用提供的函数后的返回值。
// 基本语法:
array.map(callback(currentValue, index, array))
参数:
- callback:转换函数,应用到每个元素
- currentValue:当前处理的元素
- index(可选):当前元素的索引
- array(可选):原数组
示例:
// 1. 基本数字运算
const numbers = [1, 2, 3, 4, 5]
const doubled = numbers.map(num => num * 2)
console.log(doubled)
// [2, 4, 6, 8, 10]
// 2. 字符串转换
const words = ['hello', 'world']
const upperCase = words.map(word => word.toUpperCase())
console.log(upperCase)
// ['HELLO', 'WORLD']
// 3. 对象数组转换
const users = [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 17 }
]
const userNames = users.map(user => user.name)
console.log(userNames)
// ['John', 'Jane']
// 4. 使用索引参数
const letters = ['a', 'b', 'c']
const indexed = letters.map((letter, index) => `${index + 1}: ${letter}`)
console.log(indexed)
// ['1: a', '2: b', '3: c']
