Array数组常用方法总结

本文介绍了JavaScript中常用的数组方法,包括reduce()、unshift()、push()、pop()、shift()、indexOf()、lastIndexOf()及fill()等。通过具体实例展示了每个方法的功能和使用方式。

最近发现用到数组方法要去mdn上去翻一下,所以自己总结一下加深印象

reduce()
  • 对数组中的每一个元素执行提供的reducer函数,返回一个值
const arr = [1, 2, 3, 4, 5]
const res = arr.reduce((acc, cur) => acc + cur)
const res1 = arr.reduce((acc, cur) => acc -cur, 10)
console.log(res);	// 15
console.log(res1);	// -5
unshift()
  • 在数组的开头添加元素,返回数组的新长度,改变原数组
const arr = [1, 2, 3, 4, 5]
const res = arr.unshift(3)
console.log(arr)	// [3,1,2,3,4,5]
push()
  • 在数组的末尾添加元素,返回数组的新长度,改变原数组
const arr = [1, 2, 3, 4, 5]
const res = arr.unshift(3)
console.log(arr)	// [3,1,2,3,4,5]
pop()
  • 从数组中删除最后一个元素,返回该元素的值,改变原数组
const plants = ['broccoli', 'cabbage', 'kale', 'tomato']
console.log(plants.pop()) // "tomato"
console.log(plants) // ["broccoli", "cabbage", "kale"] 
shift()
  • 从数组中删除第一个元素,并返回这个元素的值,改变原数组
const arr = [1, 2, 3]
const firstElement = arr.shift()
console.log(arr) // [2, 3]
console.log(firstElement) // 1 
indexOf()
  • 返回在数组中可以找到的给定元素的第一个索引,不存在则返回-1
const beasts = ['ant', 'bison', 'camel', 'duck', 'bison']​
console.log(beasts.indexOf('bison')) // 1
// start from index 2
console.log(beasts.indexOf('bison', 2)) // 4​
console.log(beasts.indexOf('giraffe')) // -1 
lastIndexOf()
  • 和indexOf()功能差不多,但是是从数组后面向前查找,返回在数组中可以找到的给定元素的最后一个索引。
const animals = ['Dodo', 'Tiger', 'Penguin', 'Dodo']
console.log(animals.lastIndexOf('Dodo')) // 3
const arr = [1,2,3,4,5,2]
console.log(arr.lastIndexOf(2))  // 5 
fill()
  • 用一个固定值填充数组
const arr = new Array(10).fill(1)
console.log(arr)	// [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
JavaScript 中,数组是一种非常重要的数据结构,广泛用于存储和操作一组数据。JavaScript 提供了许多内置的数组方法,这些方法可以帮助开发者高效地处理数组。以下是 JavaScript常用数组方法总结及其作用: ### 1. `forEach()` `forEach()` 方法用于对数组中的每个元素执行一次提供的函数。该方法不会返回任何值,并且不会改变原数组。 ```javascript var list = [32, 93, 77, 53, 38, 87]; var sum = 0; list.forEach(function (item) { console.log(item); sum += item; }); console.log(sum); // 输出数组元素的总和 ``` ### 2. `concat()` `concat()` 方法用于合并两个或多个数组。该方法不会修改现有数组,而是返回一个新的数组作为合并后的结果。 ```javascript var arr = ["George", "John", "Thomas"]; var arr2 = ["James", "Adrew", "Martin"]; var arr3 = ["William", "Franklin"]; var combinedArr = arr.concat(arr2, arr3); console.log(combinedArr); // ["George", "John", "Thomas", "James", "Adrew", "Martin", "William", "Franklin"] ``` ### 3. `join()` `join()` 方法用于将数组中的所有元素连接成一个字符串。可以指定一个分隔符作为参数,如果不提供,默认使用逗号 `,`。 ```javascript var arr = ["apple", "banana", "orange"]; var result = arr.join(" - "); console.log(result); // "apple - banana - orange" ``` ### 4. `reduce()` 和 `reduceRight()` `reduce()` 方法用于对数组中的每个元素执行一个累加函数,最终将数组缩减为一个单一的值。`reduceRight()` 的作用类似,但处理顺序是从右到左。 ```javascript let arr = [1, 2, 3, 4]; let sum = arr.reduce((acc, item) => acc + item, 0); console.log(sum); // 输出 10 let sumRight = arr.reduceRight((acc, item) => acc + item, 0); console.log(sumRight); // 输出 10 ``` ### 5. `indexOf()` `indexOf()` 方法用于查找数组中某个元素的索引值。如果找到该元素,则返回其索引;如果未找到,则返回 `-1`。 ```javascript let arr = ["apple", "banana", "orange"]; let index = arr.indexOf("banana"); console.log(index); // 输出 1 ``` ### 6. `map()` `map()` 方法用于创建一个新数组,其结果是对原数组中的每个元素执行一次提供的函数。 ```javascript let arr = [1, 2, 3, 4]; let squared = arr.map(x => x * x); console.log(squared); // [1, 4, 9, 16] ``` ### 7. `filter()` `filter()` 方法用于创建一个新数组,其中包含所有通过测试的元素。 ```javascript let arr = [10, 20, 30, 40, 50]; let filtered = arr.filter(x => x > 25); console.log(filtered); // [30, 40, 50] ``` ### 8. `find()` 和 `findIndex()` `find()` 方法用于返回数组中满足提供的测试函数的第一个元素的值。如果没有找到符合条件的元素,则返回 `undefined`。`findIndex()` 则返回符合条件的元素的索引,如果没有找到,则返回 `-1`。 ```javascript let arr = [5, 10, 15, 20]; let found = arr.find(x => x > 12); console.log(found); // 15 let index = arr.findIndex(x => x > 12); console.log(index); // 2 ``` ### 9. `slice()` `slice()` 方法用于返回数组的一部分,从起始索引开始,到结束索引(不包含结束索引)结束。该方法不会修改原数组。 ```javascript let arr = ["apple", "banana", "orange", "grape"]; let sliced = arr.slice(1, 3); console.log(sliced); // ["banana", "orange"] ``` ### 10. `splice()` `splice()` 方法用于修改数组内容,可以删除或添加元素。该方法会直接修改原数组。 ```javascript let arr = ["apple", "banana", "orange"]; arr.splice(1, 1, "grape"); console.log(arr); // ["apple", "grape", "orange"] ``` ### 11. `sort()` `sort()` 方法用于对数组元素进行排序。默认情况下,排序是按照字符串的 Unicode 码点进行的。可以通过提供一个比较函数来实现自定义排序。 ```javascript let arr = [10, 5, 8, 12]; arr.sort((a, b) => a - b); console.log(arr); // [5, 8, 10, 12] ``` ### 12. `reverse()` `reverse()` 方法用于反转数组元素的顺序。该方法会直接修改原数组。 ```javascript let arr = [1, 2, 3, 4]; arr.reverse(); console.log(arr); // [4, 3, 2, 1] ``` ### 13. `includes()` `includes()` 方法用于判断数组是否包含某个特定的元素。如果包含,则返回 `true`;否则返回 `false`。 ```javascript let arr = ["apple", "banana", "orange"]; console.log(arr.includes("banana")); // true ``` ### 14. `some()` 和 `every()` `some()` 方法用于测试数组中是否有至少一个元素满足提供的测试函数。如果有,则返回 `true`;否则返回 `false`。`every()` 方法用于测试数组中所有元素是否都满足提供的测试函数。如果全部满足,则返回 `true`;否则返回 `false`。 ```javascript let arr = [5, 10, 15, 20]; console.log(arr.some(x => x > 12)); // true console.log(arr.every(x => x > 3)); // true ``` ### 15. `push()` 和 `pop()` `push()` 方法用于向数组末尾添加一个或多个元素,并返回新的长度。`pop()` 方法用于删除数组的最后一个元素,并返回该元素。 ```javascript let arr = ["apple", "banana"]; arr.push("orange"); console.log(arr); // ["apple", "banana", "orange"] let last = arr.pop(); console.log(last); // "orange" console.log(arr); // ["apple", "banana"] ``` ### 16. `shift()` 和 `unshift()` `shift()` 方法用于删除数组的第一个元素,并返回该元素。`unshift()` 方法用于向数组开头添加一个或多个元素,并返回新的长度。 ```javascript let arr = ["apple", "banana", "orange"]; let first = arr.shift(); console.log(first); // "apple" console.log(arr); // ["banana", "orange"] arr.unshift("grape", "apple"); console.log(arr); // ["grape", "apple", "banana", "orange"] ``` ### 17. `fill()` `fill()` 方法用于将数组中的所有元素替换为指定的值。 ```javascript let arr = [1, 2, 3, 4]; arr.fill(0); console.log(arr); // [0, 0, 0, 0] ``` ### 18. `copyWithin()` `copyWithin()` 方法用于将数组中的一部分复制到数组中的另一个位置,并返回修改后的数组。 ```javascript let arr = [1, 2, 3, 4, 5]; arr.copyWithin(0, 3); console.log(arr); // [4, 5, 3, 4, 5] ``` ### 19. `flat()` 和 `flatMap()` `flat()` 方法用于将多维数组“拉平”,变成一维数组。`flatMap()` 方法首先对数组中的每个元素应用一个映射函数,然后将结果“拉平”。 ```javascript let arr = [1, [2, [3, 4], 5]]; console.log(arr.flat()); // [1, 2, 3, 4, 5] let result = arr.flatMap(x => (Array.isArray(x) ? x : [x * 2])); console.log(result); // [2, 2, 3, 4, 10] ``` ### 20. `entries()`, `keys()`, 和 `values()` 这些方法用于遍历数组。`entries()` 返回一个包含数组键值对的迭代器,`keys()` 返回一个包含数组索引的迭代器,`values()` 返回一个包含数组元素的迭代器。 ```javascript let arr = ["apple", "banana", "orange"]; let iterator = arr.entries(); console.log(iterator.next().value); // [0, "apple"] console.log(iterator.next().value); // [1, "banana"] console.log(iterator.next().value); // [2, "orange"] ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值