ES6中常用数组方法总结

1.find()

find()返回值是第一个符合条件的数组子项,找到符合条件的之后就不在继续遍历。如果没有符合条件的元素则返回undefined。

let array = [{ name: '张三', age: 1 }, { name: '李四', age: 2 },{ name: '王五', age: 3 }]
let findItem = array.find(item => item.name === '张三') 
console.log(findItem)  // { name: '张三', age: 1 }
2.findIndex()

findIndex() 返回第一个符合条件的数组子项的下标,找到符合条件的之后就不在继续遍历。如果没有符合条件的元素则返回-1。

let array = [{ name: '张三', age: 1 }, { name: '李四', age: 2 },{ name: '王五', age: 3 }]
let findIndex = array.findIndex(item => item.name === '张三') 
console.log(findIndex)  // 0
3.forEach()

forEach() 方法对数组的每个元素执行一次给定的函数。

// 语法: array.forEach(function(item,index,array))
const array = ['a', 'b', 'c'];
array.forEach((element) => console.log(element));

// Expected output: "a"
// Expected output: "b"
// Expected output: "c"
4.map()

map() 返回数组,数组中的元素为原始数组调用函数处理后的值。

let array = [{ name: '张三', age: 1 }, { name: '李四', age: 2 },{ name: '王五', age: 3 }]
let map = array.map(item => item.age + 1) 	  // 返回符合条件元素组成的数组
console.log(map ) // [{ name: '张三', age: 2 }, { name: '李四', age: 3 },{ name: '王五', age: 4 }]
5.filter()

filter() 返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。

let array = [{ name: '张三', age: 1 }, { name: '李四', age: 2 },{ name: '王五', age: 3 }]
let filter = array.filter(item => item.age > 1) 	  // 返回符合条件元素组成的数组
console.log(filter) // [{ name: '李四', age: 2 },{ name: '王五', age: 3 }]
6.includes()

includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。

// 语法: array.includes(searchElement)
let array = ['abc', 'def', 'ghi']
array.includes('def')
// => true
array.includes('txt')
// => false
7.some()

some() 方法用于检测数组中的元素是否满足指定条件。如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false。如果是空数组返回fales。

// 语法: array.some(function(item,index,array))
let array = [{ name: '张三', age: 1 }, { name: '李四', age: 2 },{ name: '王五', age: 3 }]
array.some(item => item.name=== '张三') 
// => true
8.every()

every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。如果所有元素都满足条件,则返回 true。如果是空数组返回true。

// 语法: array.every(function(item,index,array))
let array = [{ name: '张三', age: 1 }, { name: '李四', age: 2 },{ name: '王五', age: 3 }]
array.every(item => item.age < 4) 
// => true

注意:some()判断数组中是否至少有一个元素满足条件,every()判断数组中是否每个元素都满足条件。

9.reduce()

reduce() 方法对数组中的每个元素按序执行一个提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。

// 语法: array.reduce(function(accumulator,currentValue,currentIndex,array), initialValue)
const array1 = [1, 2, 3, 4];

// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumWithInitial = array1.reduce(
  (accumulator, currentValue) => accumulator + currentValue,
  initialValue,
);
// => 10

使用 reduce() 实现 filter() + map()

// [1, 2, 3, 4] --> [4, 6, 8]
// filter() + map()
const arr = [1, 2, 3, 4];
const result = arr.filter((item) => item > 1).map((item) => item * 2);
// reduce()
const result2 = datasetList.reduce((acc, item) => {
	if (item > 1) {
  		acc.push(item * 2);
	}
	return acc;
}, []);
### 关于 `findIndex` 的编程用法 在现代编程语言中,`findIndex` 是一种常见的数组方法,用于返回满足特定条件的第一个元素的索引。如果没有任何元素符合条件,则返回 `-1`。 以下是 JavaScript 中 `findIndex` 方法的标准定义和实现方式: #### 定义 JavaScript 提供了一个内置的方法 `Array.prototype.findIndex()`,它接受一个回调函数作为参数,并对该数组中的每个元素执行此回调函数,直到找到第一个使该函数返回真值的元素为止[^4]。 #### 实现示例 下面是一个自定义实现 `findIndex` 函数的例子,适用于不支持原生 `findIndex` 方法的语言环境或场景: ```javascript function findIndex(array, callback) { for (let index = 0; index < array.length; index++) { if (callback(array[index], index, array)) { return index; } } return -1; } // 使用示例 const numbers = [1, 2, 3, 4]; const result = findIndex(numbers, function(element) { return element === 3; }); console.log(result); // 输出: 2 ``` 在这个例子中,我们手动实现了类似于 JavaScript 原生 `findIndex` 的功能。通过遍历数组并调用回调函数来判断当前元素是否符合条件,最终返回匹配到的第一个元素的索引位置。 对于 MATLAB 或其他类似的数值计算工具而言,可以利用逻辑运算符配合矩阵操作完成相似的功能。例如,在给定引用中提到的情况可以通过如下方式进行处理[^1]: ```matlab temp = rand(5, 1); mintemp = min(temp); % 找到最小值对应的索引 index = find(temp == mintemp, 1); if ~isempty(index) disp(['The first minimum value is at position ', num2str(index)]); else disp('No matching values found.'); end ``` 这里展示了如何基于比较运算生成布尔型向量再结合 `find` 来定位目标数据的位置信息。 #### 非纯函数的影响 值得注意的是某些情况下由于存在副作用或者状态依赖等原因可能导致同样的输入却得到不同的输出结果。比如随机数生成器每次都会产生新的伪随机序列从而影响后续流程判定标准的一致性等问题都需要特别留意[^2]。 ### 总结 无论是高级脚本语言还是低级系统开发框架设计当中都广泛存在着寻找指定模式项的任务需求;而针对这些具体应用场景则往往会有相应的高效解决方案可供选用——从简单的线性扫描算法直至复杂的哈希表结构查询机制等等皆有可能成为候选技术路线之一视乎实际项目背景约束条件所限择优选取即可达成预期目的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值