JavaScript中常用的数组操作方法总结

目录
  • 前言
  • 数组基础遍历方法
    • for
    • for of
    • for in
  • 数组的基础操作方法
    • push:尾部追加元素
    • pop:尾部移出元素
    • unshift:头部追加元素
    • shift:头部移出元素
    • splice:删除添加替换
    • concat:连接
    • join:分割
    • slice:切割
    • includes:查询
    • indexOf:查询
    • fill:填充/替换
  • es6中带来的数组高阶方法
    • forEach:迭代(枚举)
    • filter:过滤
    • map:映射
    • find:查找
    • findIndex:查找下标

前言

函数和方法的区别:

函数function:独立的function,那么称之为是一个函数。

function foo() {}

方法method:当我们的一个函数属于某一个对象时,我们称这个函数是这个对象的方法。

var obj = {
  foo: function() {}
}
obj.foo()

例如,对一个数组的操作方法:filter,我们就称之为是一个方法。

// filter:过滤
var nums = [10, 5, 11, 100, 55]
nums.filter((item) => item > 10)

在以下对数组的操作中,我们统称方法。

文章中通用常量意义:

item:某一项。当作为参数时,为遍历数组中的每一项。当作为返回值时,意思为某项数据,可以为任意类型。

index:下标。当作为参数时,为遍历数组中的item在数组中下标。当作为返回值时,意思为下标。

arr:数组。当作为返回值时,意思为改变数组本身。当作为参数时,意思为自身数组。

length:数组长度。当作为返回值时,意思为数组长度

newarr:新数组。当作为返回值时,意思为产生一个新数组,

boolean:布尔值。当作为方法体时以为:条件的返回值为布尔值。

num:数值类型。

start :数组遍历开始下标(包含)

end:数组遍历结束下标(不包含)

数组基础遍历方法

for

for(var i = 0, len = arr.length; i < len; i++ ){
  console.log(arr[i])
}

for基础循环可以用来遍历数组,字符串,类数组,DOM节点等。

for of

for (var item of arr) {
  console.log(item);
}

for of:for-of获取的是数组的值。可以使用 break、continue、return 来中断循环遍历。

for in

for (var value in arr) {
  console.log(value);
}

for in:一般用于对对象的遍历,但也可以用于数组。用于数组遍历时,for-in获取的是数组的索引

var arr = [10, 7, 9, 100, 11]

for (var value in arr) {
  console.log(value);
}
// 0 1 2 3 4

注意:

1).index索引为字符串型数字,不能直接进行几何运算。

2).使用for in会遍历数组所有的可枚举属性,包括原型。例如上栗的原型方法method和name属性。

Array.prototype.myfun=function(){
    alert('myfun');
}
var arr = [0,1,2,3];

for(var i in arr){
    console.log(arr[i]);
}

console.log(Array.prototype)
/* 输出结果:
0 1 2 3
ƒ (){
    alert('myfun');
}
*/

数组的基础操作方法

push:尾部追加元素

var length = arr.push(item)

push() 方法用于对数组尾部插入新的元素。返回值为追加后的数组长度。

var nums = [10, 7, 9, 100, 11]

var length = nums.push(2)
console.log(length) // 2

pop:尾部移出元素

var item = arr.pop()

pop() 方法用于删除数组的最后一个元素并返回删除的元素。无参,返回值为删除的元素。

var nums = [10, 7, 9, 100, 11]

var item = nums.pop()
console.log(item) // 11

unshift:头部追加元素

var length = arr.unshift(item)

unshift() 方法用于对数组头部插入新的元素。返回值为追加后的数组长度。

shift:头部移出元素

var item = arr.unshift()

shift() 方法用于对数组头部插移出元素。返回值为追出后的元素。

splice:删除添加替换

var newarr = arr.splice(index, howmany, item)

splice() 方法用于对数组元素进行删除添加替换操作。返回值为删除的元素组成的数组。

index(必填):数组下标,代表从第几个元素开始执行操作。

howmany(可选):规定删除多少个元素,如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。

item(可选):插入元素,可以为多个。从下标位置插入。

var nums = [10, 7, 9, 100, 11]
var newarr= nums.splice(2,2,99,77,55)

console.log(newarr) // [9, 100]
console.log(nums) // [10, 7, 99, 77, 55, 11]

注意:splice() 方法会改变原数组。

concat:连接

newarr = arr.concat(nums1, nums2)

concat() 方法用于连接两个或多个数组。

var nums1 = [2,5,7,9]
var nums2 = [1,3,55]
var newarr = []
var newarr = newarr.concat(nums1, nums2)

concat() 方法不会改变原数组。

join:分割

Str = arr.join(separator)

separator:分割符,如果为空,则已 “,” 分割。

join() 方法用于把数组中的所有元素转换一个字符串。

var nums = [10, 7, 9, 100, 11]

var Str = nums.join('x')
console.log(Str) // 10x7x9x100x11

slice:切割

newarr = arr.slice(start, end)

从数组的 [start, end)位置截取数组元素。

slice() 方法可从已有的数组中返回选定的元素。

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

注意: slice() 方法不会改变原始数组。

includes:查询

boolean = arr.includes(value, start)

value(必填): 查找的元素,可以为字符串或数值。

start(可选):开始查找的位置下标。

includes() 方法用于判断字符串是否包含指定的子字符串。返回值为布尔值。

indexOf:查询

index = arr.indexOf(value, start)

value(必填): 查找的元素,可以为字符串或数值。

start(可选):开始查找的位置下标。

indexOf() 方法用于判断字符串是否包含指定的子字符串。返回值为查询到下标,若为查询到则为 -1。

lastIndexOf()方法类似,返回值为 value 最后一次出现的下标 。

fill:填充/替换

fruits.fill(value, start, end)

value(必填):用来填充数组元素的值。

start(可选):可选开始索引值(包含),默认值为0。

end(可选):可选终止索引(不包含),默认值为 arr.length 。

通常与 new Array 搭配使用。

var arr = new Array(10).fill('10')
// ['10', '10', '10', '10', '10', '10', '10', '10', '10', '10']

或是用于替换掉数组中元素的值。

var arr3 = [0, 1, 2, 3, 4, 5, 6]
console.log(arr3.fill(1, 3)); //[0, 1, 2, 1, 1, 1, 1]

es6中带来的数组高阶方法

接下来是es6中带来的数组高阶方法。

高阶函数:一个函数如果接收另一个函数作为参数,或者该函数会返回另外一个函数作为返回值的函数,那么这个函数就称之为是一个高阶函数。

数组的高阶方法通常会接收一个回调函数作为参数,在回调中遍历数组,执行操作。

接下来

写在前面:接下来介绍的数组高阶方法,回调函数的写法均采用的是箭头函数的写法,因箭头没有自己的 this 指向,就不介绍第二个参数 thisValue 了。

forEach:迭代(枚举)

arr.forEach((item, index, arr) => { 写想要枚举的操作 })

forEach 方法不会改变原数组,也没有返回值;

var nums = [10, 7, 9, 100, 11]
nums.forEach((item) => {
    if (item > 10) {
        console.log(item)
    }
}) // 100, 11

forEach无法使用 break 跳出循环。使用 return 时,效果和在 for 循环中使用 continue 一致。

forEach如果想要跳出循环,可以通过 throw new Error() 抛出错误的方式实现。

var nums = [10, 7, 9, 100, 11]
nums.forEach((item) => {
    if (item == 100) {
        throw new Error("miss 100")
    } else {
        console.log(item)
    }
}) // 10 7 9 Error: miss 100

filter:过滤

newarr = arr.filter((item, index, arr) => boolean)

例子:

var nums = [10, 7, 9, 100, 11]
var newNums = nums.filter((item) => {
  return item % 2 === 0 // 偶数
})
console.log(newNums) // [10, 100]
console.log(nums) // [10, 5, 11, 100, 55]

返回值是过滤后的新数组

map:映射

newarr = arr.map((item, index, arr) => { 写指定方法体 })

map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。

var nums = [10, 7, 9, 100, 11]

var newNums = nums.map((item) => {
  return item * 10
})
console.log(newNums) // [100, 50, 110, 1000, 550]
console.log(nums) // [10, 5, 11, 100, 55]

注意:map 方法中的 callback 函数只需要接受一个参数,就是正在被遍历的数组元素本身。

但这并不意味着 map 只给 callback 传了一个参数(会传递3个参数)。这个思维惯性可能会让我们犯一个很容易犯的错误。

// 下面的语句返回什么呢:
["1", "2", "3"].map(parseInt);
// 你可能觉的会是[1, 2, 3]
// 但实际的结果是 [1, NaN, NaN]

// num.parseInt() , parseInt()接收两个参数,第一个为要转换的字符串,第二个参数是进制数(2-36之间)如果省略该参数或其值为 0,则数字将以 10 为基础来解析,超过返回NaN。
// map的 callback,会给它传递三个参数:当前正在遍历的元素, 元素索引, 原数组本身。第三个参数被忽略
// 所以就相当于执行了,parseInt("1", 0),parseInt("2", 1),parseInt("3", 2),

// 正确的写法应该为:
function returnInt(element){
 return parseInt(element,10);
}

["1", "2", "3"].map(returnInt);
// 返回[1,2,3]

find:查找

item = arr.find((item, index, arr) => { boolean })

find()方法用于获取数组中符合指定条件的第一个元素。没有找到返回 undefined。

var family = [
  { name: 'xiaoming', age: 18 },
  { name: 'xiaocheng', age: 40 },
  { name: 'xiaoli', age: 42 }
]

var item = family.find((item) => {
  return item.name === 'xiaoming'
})
console.log(item) // { name: 'xiaoming', age: 18 }

注意,返回的item为浅拷贝。

item.name = 'kkk'
console.log(family)
/*
* {name: 'kkk', age: 18}
* {name: 'xiaocheng', age: 40}
* {name: 'xiaoli', age: 42}
*/

这里就反应出 find() 方法返回的结果内存指向依然是 family 所指向的内存地址,

所以这里返回的是浅拷贝的数据。

findIndex:查找下标

index = arr.findIndex((item, index, arr) => { boolean })

findIndex() 返回符合条件的数组第一个元素位置(索引),没有找到符合条件则返回 -1。

var family = [
  { name: 'xiaoming', age: 18 },
  { name: 'xiaocheng', age: 40 },
  { name: 'xiaoli', age: 42 }
]

var index = family.findIndex((item) => {
  return item.name === 'xiaoming'
})
console.log(index) // 0

以上就是JavaScript中常用的数组操作方法总结的详细内容,更多关于JavaScript数组操作方法的资料请关注我们其它相关文章!

(0)

相关推荐

  • JavaScript中常用的数组操作方法

    目录 一.concat() 二.join() 三.push() 五.shift() 六.unshift() 七.slice() 八.splice() 九.substring() 和 substr() 十.sort 排序 十一.reverse() 十二.indexOf 与 lastIndexOf 十三.every 对数组 十四.some 十五.filter 十六.map 十七.forEach 数组遍历 1.find(): 2.findIndex(): 3.fill(): 4.copyWithin(

  • 梳理总结25JavaScript数组操作方法实例

    目录 1.删除数组重复项 2. 获取数组的片段 3.Array.from 达到 .map 的效果 4.置空数组 5. 将数组转换为对象 6. 用数据填充数组 7. 数组合并 8.求两个数组的交集 9.从数组中删除虚值 10. 从数组中获取随机值 11.反转数组 12 lastIndexOf() 方法与indexOf()方法 13.对数组中的所有值求和 14.数组的遍历 15.数组的映射 16.数组的拷贝 17.数组元素的查找 18.查询数组 19.数组的过滤 20.数组的插入 21.删除数组元素

  • JavaScript操作数组的常用方法总结

    我们在日常开发过程中,使用到原生 JavaScript的时候,有时候会频繁的对数组进行操作,今天我把工作以来,经常用到的有关 JavaScript数组的方法总结一下,方便日后工作的时候查找使用! 一.数组转字符串 需要将数组元素用某个字符连接成字符串. var a=[1,2,3,4,5,6]; var b=a.join(','); console.log(b); 结果: 1,2,3,4,5,6 二.字符串转数组 实现方法为将字符串按某个字符切割成若干个字符串,并以数组形式返回          

  • js 数组详细操作方法及解析合集

    前言 在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总结,很多时候就算用过几次这个api,在开发中也很容易忘记,还是要谷歌一下.所以就希望对这块内容有一个比较系统性的总结,在这背景下,就有了本篇文章,如果喜欢的话可以点波赞/关注,支持一下,希望大家看完本文可以有所收获. 创建一个数组: // 字面量方式: // 这个方法也是我们最常用的,在初始化数组的时候 相当方便 var a = [3, 11, 8]; // [3,11,8]; //

  • JavaScript数组及常见操作方法小结

    本文实例讲述了JavaScript数组及常见操作方法.分享给大家供大家参考,具体如下: 数组及操作方法 数组就是一组数据的集合,javascript中,数组里面的数据可以是不同类型的. 定义数组的方法 //对象的实例创建 var aList = new Array(1,2,3); //直接量创建 var aList2 = [1,2,3,'asd']; 操作数组中数据的方法 1.获取数组的长度:aList.length; var aList = [1,2,3,4]; alert(aList.len

  • js数组操作方法总结(必看篇)

    判断数值数组中各个数字出现的奇偶次数 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>数组操作</title> </head> <body> <script type="text/javascript"> var arr=[3,1,2,2,1,3,1

  • js常用数组操作方法简明总结

    //javascript 中的数组分割 var colors = ["red","green","blue"]; //alert(colors.toString()); alert(colors.join("|")); //返回结果是red|green|blue var colors = ["red","green","blue",null]; alert(color

  • JavaScript中常用的数组操作方法总结

    目录 前言 数组基础遍历方法 for for of for in 数组的基础操作方法 push:尾部追加元素 pop:尾部移出元素 unshift:头部追加元素 shift:头部移出元素 splice:删除添加替换 concat:连接 join:分割 slice:切割 includes:查询 indexOf:查询 fill:填充/替换 es6中带来的数组高阶方法 forEach:迭代(枚举) filter:过滤 map:映射 find:查找 findIndex:查找下标 前言 函数和方法的区别:

  • PHP中常用的数组操作方法笔记整理

    概述 要访问一个变量的内容,可以直接使用其名称.如果该变量是一个数组,可以使用变量名称和关键字或索引的组合来访问其内容. 像其他变量一样,使用运算符=可以改变数组元素的内容.数组单元可以通过 array[key] 语法来访问. 数组的基本操作 php定义数组: <?php $array = array(); $array["key"] = "values"; ?> 在PHP中声明数组的方式主要有两种: 1.用array()函数声明数组, 2.直接为数组元

  • 详解JavaScript中常用的函数类型

    网页中的java代码需要写在JavaScript中,里面部分少不了函数,介绍一下JavaScript中常用的函数类型. 1.可变函数 <script> function show(){ alert("第一个..."); } function show(str){ alert("第二个"); } function show(a,b){ alert("第三个..."); alert(a+":"+b); } </s

  • JavaScript中常用的几种字符串方法汇总(新手必看)

    JavaScript常用的几种字符串方法 字符串是一种只读数据,只能查 常用的几种字符串方法: 1.charAt:根据指定的下标获取到对应的字符; 2.charCodeAt:根据指定的下标获取到字符对应的阿斯克码:(底部有ASCII对照表) ps:通过阿斯克码获取到字符: 3.substring:截取字符串: 4.substr:截取字符串: 5.slice:截取字符串: 6.indexOf:查找字符/子字符串在大字符串中第一次出现的位置,找到了返回下标,找不到返回-1: 7.lastIndexO

  • JavaScript中常用的验证reg

    不错的JS验证~~~~~~~~~~~~~~~~~~~~~~~~~ 用途:校验ip地址的格式 输入:strIP:ip地址 返回:如果通过验证返回true,否则返回false: */ function isIP(strIP) { if (isNull(strIP)) return false; var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g //匹配IP地址的正则表达式 if(re.test(strIP)) { if( RegExp.$1 <256 && R

  • JavaScript中常用的3种弹出提示框(alert、confirm、prompt)

    三种提示框 alert () confirm() prompt () alert () alert()方法是显示一条弹出提示消息和确认按钮的警告框. 需要注意的是 :alert()是一个阻塞的函数,如果我们不点确认按钮,后面的内容就不会加载出来. 使用方式: alert("想要提示的文本内容") 样例代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <

  • javascript中常用编程知识

    1.null 与 undefined * 从一个对象中获取某个属性,如果该对象及其 prototype 链 中的对象都没有该属性的时候,该属性的值为 undefined . * 一个 function 如果没有显式的通过 return 来返回值给其调用者的话,其返回值就是 undefined .有一个特例就是在使用new的时候. * JavaScript 中的 function 可以声明任意个形式参数,当该 function 实际被调用的时候,传入的参数的个数如果小于声明的形式参数,那么多余的形

  • JavaScript中的类数组对象介绍

    JavaScript中,数组是一个特殊的对象,其property名为正整数,且其length属性会随着数组成员的增减而发生变化,同时又从Array构造函数中继承了一些用于进行数组操作的方法.而对于一个普通的对象来说,如果它的所有property名均为正整数,同时也有相应的length属性,那么虽然该对象并不是由Array构造函数所创建的,它依然呈现出数组的行为,在这种情况下,这些对象被称为"类数组对象".以下是一个简单的类数组对象: 复制代码 代码如下: var o = {0:42,

  • 浅析JavaScript中的array数组类型系统

    前面的话 数组是一组按序排列的值,相对地,对象的属性名称是无序的.从本质上讲,数组使用数字作为查找键,而对象拥有用户自定义的属性名.javascript没有真正的关联数组,但对象可用于实现关联的功能 Array()仅仅是一种特殊类型的Object(),也就是说,Array()实例基本上是拥有一些额外功能的Object()实例.数组可以保存任何类型的值,这些值可以随时更新或删除,且数组的大小是动态调整的 除了对象之外,数组Array类型可能是javascript中最常用的类型了.而且,javasc

随机推荐