JavaScript数组API总结

简介: JavaScript数组API总结

本文 首先对数组常用方法进行分类,具体使用方法会在分类后整理。

一 分类:


1.修改原数组


pop()、push()、reverse()、shift()、unshift()、sort()、splice()、splite() …

2.不会修改原数组的


concat()、join()、slice()、filter() 、reduce() …

3.es6新增的如map()、find()、findIndex()、filter()、every()、some ()会不会改变原数组???

1、用forEach、map函数对引用类型的数组元素的属性值进行了修改,原数组也会跟着改变。即可能是数组、对象、函数(函数是引用类型)。


forEach里的回调函数对引用类型的数组元素的属性有修改操作。他们的特点大多需遍历数组


2、如果你不希望原数组在上述情况下被改变的解决办法:

   对操作数组进行深拷贝。用拷贝的对象调用数组处理方法,原数组就不会改变了。

image.png

二 详细介绍


1.删除数组末尾的元素  pop()

1. var last = fruits.pop(); // remove Orange (from the end)
2. // last: "Orange"; fruits: ["Apple", "Banana"];

2删除数组最前面(头部)的元素  shift()

1. var first = fruits.shift(); // remove Apple from the front
2. // first: "Apple"; fruits: ["Banana"];

3 添加元素到数组的末尾  push()

1. var newLength = fruits.push('Orange');
2. // newLength:3; fruits: ["Apple", "Banana", "Orange"]

4添加元素到数组的头部

1. var newLength = fruits.unshift('Strawberry') // add to the front
2. // ["Strawberry", "Banana"];

5 forEach() 遍历数组

// 遍历:forEach
    let arr = ['张飞', '关羽', '赵云', '张辽', '曹仁', '许褚'];
    // ECMAScript5:forEach
    // arr.forEach( function (item, index, o) {
    //  // 第一个参数:item,代表当前项
    //  // 第二个参数:index,代表当前项索引值
    //  // 第三个参数:o,代表当前数组本身
    //  console.log( item, index, o );
    // } );

6  find:遍历查找,返回第一个满足条件的元素

// find:遍历查找,返回第一个满足条件的元素
    // let re = [6, 2, 7, 4, 5, 9].find( function (item, index, o) {
    //  // console.log( item, index, o );
    //  return item > 6;
    // } );
    // console.log( re );

7 findIndex:遍历查找,返回第一个满足条件的元素的索引值

// findIndex:遍历查找,返回第一个满足条件的元素的索引值
    // let re = [6, 2, 7, 4, 5, 9].findIndex( function (item, index) {
    //  return item > 6;
    // } );
    // console.log( re );

8 some:遍历查找,如果有满足条件有一个就会返回true,否则就是false

// some:遍历查找,如果有满足条件有一个就会返回true,否则就是false
    // let re = [6, 2, 7, 4, 5, 9].some( function (item, index) {
    //  return item > 6;
    // } );
    // console.log( re );
// array.some() - 检查数组中是否有元素满足条件。某一元素为true,则为true,否则返回false
// 用于检测数组中是否有满足条件的元素。
// some如果遇到 true 就不再执行了。如果都为 false 返回false。不会改变原数组。
// some 英语翻译为一些,所以some方法 只要其中一个为true 就会返回true的。some:一真即真
let result1 = users.some(item => item.age > 20);
console.info(result1); // true

9 every:遍历查找,每个元素都满足条件则返回true,否则就是false

// every:遍历查找,每个元素都满足条件则返回true,否则就是false
    // let re = [6, 2, 7, 4, 5, 9].every( function (item, index) {
    //  return item > 6;
    // } );
    // console.log( re );
// array.every() - 检查数组中是否所有元素都满足条件。某一个为false,则返回false,否则返回true
// 用于检测数组中所有元素是否都满足该条件。
// every如果遇到 false 就不在执行了。如果都为 true 返回true。不会改变原数组。
// every 英语翻译为所有,所以every方法 必须所有都返回true才会返回true,哪怕有一个false,就会返回false。every:一假即假
let result2 = users.every(item => item.age > 20);
console.info(result2); // false

10 filter:遍历筛选,筛选出满足条件的元素返回新的数组

// filter:遍历筛选,筛选出满足条件的元素返回新的数组
    // let re = [6, 2, 7, 4, 5, 9].filter( function (item, index) {
    //  return item > 6;
    // } );
    // console.log( re );

11  map:遍历数组,让每个元素执行一边回调函数把所有结果放到新数组返回

// map:遍历数组,让每个元素执行一边回调函数把所有结果放到新数组返回
    let re = [6, 2, 7, 4, 5, 9].map( function (item, index) {
      return item * item;
    } );
    console.log( re );
// array.map() - 对数组中的每一个元素进行操作。返回每一个元素执行后的结果
// 用于处理数组中的数据。产生新数组,不会改变原数组。foreach这是对原有数组进行操作,没有返回值。
// map()方法创建了一个新数组,但新数组并不是在遍历完array1后才被赋值的,而是每遍历一次就得到一个值。
// forEach适合于你并不打算改变数据的时候,而只是想用数据做一些事情 – 比如存入数据库或则打印出来。
// map()适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。这样的优点在于你可以使用复合(composition)(map(), filter(), reduce()等组合使用)来玩出更多的花样。

12  sort:数组排序

  // sort:数组排序
    // let arr = [23, 66, 123, 33, 7, 46];
    // console.log( arr.sort() );
    // let re = arr.sort( function (a, b) { return a - b; } );// 从小到大排序
    // console.log( re );
    // console.log( arr.sort( function (a, b) { return b - a; }) );

13 reverse:翻转数组顺序

1. //  reverse:翻转数组顺序
2.    // let arr = ['a', 'b', 'c'];

14  join:用指定内容连接数组成为字符串

// join:用指定内容连接数组成为字符串
    // let arr = ['张三', '李四', '尼古拉斯'];
    // let re = arr.join('');

15 indexOf:查找首次出现的索引位置,找不到就会返回-1

     lastIndexOf:查找尾次出现的索引位置,找不到就是-1

  let arr = ['a', 'b', 'c', 'd', 'a', 'b', 'c'];
    // 查找数组中是否具有c
    // indexOf:查找首次出现的索引位置,找不到就会返回-1
    // let re = arr.indexOf('m');
    // lastIndexOf:查找尾次出现的索引位置,找不到就是-1
    // let re = arr.lastIndexOf('m');

16  concat:拼接数组

// concat:拼接数组
    let re = arr.concat([1, 2, 3], ['11', 22, 33], 'aa', 'bb', 'cc');
    console.log( re )

17 Array.from();:把伪数组转换为真数组

// Array.from();:把伪数组转换为真数组
    // 注意:要想使用这个方法,那么伪数组必须有length,否则转换不了
    // let o = {
    //  0 : 'aa',
    //  1 : 'bb',
    //  2 : 'cc',
    //  3 : 'dd',
    //  length : 4
    // }
    // // 把伪数组转换为真数组
    // let arr = Array.from(o);
    // console.log(arr);

18   reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

array.reduce(function(prev, current, currentIndex, arr), initialValue)
prev:函数传进来的初始值或上一次回调的返回值
current:数组中当前处理的元素值
currentIndex:当前元素索引
arr:当前元素所属的数组本身
initialValue:传给函数的初始值
       const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
       const sum = arr.reduce(function (prev, current) {
         return prev+current
       }, 0)
       console.log(sum) //55

19  slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

stringObject.slice(start,end)
String 对象的方法 slice()、substring() 和 substr() (不建议使用)都可返回字符串的指定部分。slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。
还要注意的是,String.slice() 与 Array.slice() 相似。

image.png

目录
打赏
0
0
0
0
20
分享
相关文章
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
盘点原生JS中目前最没用的几个功能API
在JavaScript的发展历程中,许多功能与API曾风光无限,但随着技术进步和语言演化,部分功能逐渐被淘汰或被更高效的替代方案取代。例如,`with`语句使代码作用域复杂、可读性差;`void`操作符功能冗余且影响可读性;`eval`函数存在严重安全风险和性能问题;`unescape`和`escape`函数已被`decodeURIComponent`和`encodeURIComponent`取代;`arguments`对象则被ES6的剩余参数语法替代。这些变化体现了JavaScript不断优化的趋势,开发者应紧跟技术步伐,学习新技能,适应新技术环境。
58 10
深入浅出:使用Node.js构建RESTful API
在这个数字时代,API已成为软件开发的基石之一。本文旨在引导初学者通过Node.js和Express框架快速搭建一个功能完备的RESTful API。我们将从零开始,逐步深入,不仅涉及代码编写,还包括设计原则、最佳实践及调试技巧。无论你是初探后端开发,还是希望扩展你的技术栈,这篇文章都将是你的理想指南。
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将引导您步入Node.js的奇妙世界,通过实践操作,掌握如何使用这一强大的JavaScript运行时环境构建高效、可扩展的RESTful API。我们将一同探索Express框架的使用,学习如何设计API端点,处理数据请求,并实现身份验证机制,最终部署我们的成果到云服务器上。无论您是初学者还是有一定基础的开发者,这篇文章都将为您打开一扇通往后端开发深层知识的大门。
95 12
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发如同一座灯塔,指引着数据的海洋。本文将带你航行在Node.js的海域,探索如何从一张白纸到完成一个功能完备的RESTful API。我们将一起学习如何搭建开发环境、设计API结构、处理数据请求与响应,以及实现数据库交互。准备好了吗?启航吧!
Vue.js 3:探索组合式API带来的新变革
Vue.js 3:探索组合式API带来的新变革
Vue.js 3中的Composition API:提升你的组件开发体验
Vue.js 3中的Composition API:提升你的组件开发体验
105 1